我想根据发送到控制器的内容动态选择局部视图,并管理它,但我觉得我是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();
}
然后在folderA中,我获得了我网站该部分的所有部分视图。我有很多部分和每个部分1个控制器。但是,我认为这不会扩展,因为我每次添加页面时都必须继续重建。将页面存储在DB中会更好吗?
答案 0 :(得分:0)
我认为您目前的做法非常合理。我认为您提到的问题是,无论何时添加或删除字典中的新条目,都必须重建应用程序。
作为解决方案,您可以将页面名称存储在db中,并在需要时进行检索。
不要使用硬编码字典尝试这样的事情......
在您的控制器中..
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();
}
这可能不是这样的确切答案......