如何对多个局部视图重用控制器

本文关键字:视图 控制器 个局 | 更新日期: 2023-09-27 18:28:01

我想根据发送到控制器的内容动态选择一个部分视图,并对其进行了管理,但我觉得我a)过于复杂了,b)不确定如何轻松获取所有页面链接。每一个都将依次发言。如果我在下面犯了错误,请忽略,这是记忆造成的!在家里一切都很好,我正在澄清是否有更好的方法!

首先,我所做的:

我有一个控制器:

private Dictionary<int, string> pagesForFolder = new Dictionary<int, string>() {
         ... here I have my list of pages (index and pagename pairs)
}
public ActionResult Test(int id = -1)
{
   try {
        string pageName = "";
        var result = pagesForFolder.TryGetValue(id, out pageName);
        if(result) 
           string directiory = "~Views/folderA/_" + pageName +".cshtml";
           return PartialView(directory);
    }
    catch(Exception ex) {  ... }
    return View();
}

然后在文件夹A中,我有我网站那部分的所有部分视图。我有很多部分,每个部分有一个控制器。然而,我认为这不会扩展得那么好,因为每次添加页面时我都必须不断重建。将页面存储在数据库中会更好吗?

如何对多个局部视图重用控制器

我认为您当前的方法非常合理。我认为您提到的问题是,无论何时向字典添加或删除新条目,都必须重新构建应用程序。

作为解决方案,您可以将页面名称存储在数据库中,并在需要时进行检索。

与其有一本硬编码的字典,不如试试这样的。。。

在您的控制器中。。

public ActionResult Test(int id = -1)
{
   try {
        string pageName =  GetYourPageFromDB(id);
        if(!string.IsNullOrEmpty(pageName)) 
                   string directiory = "~Views/folderA/_" + pageName +".cshtml";
           return PartialView(directory);
    }
    catch(Exception ex) {  ... }
    return View();
}

这可能不是确切的答案,试试这样的。。。