我有一个ASP.Net MVC 4应用程序,用户可以为其托管的单页网站(在此应用程序中)选择主题或设计。起初,我想用内置区域做这个,但由于一些应用程序限制,我决定不使用该方法。我认为这样做的方式(到目前为止工作)是将用户发送到控制器的索引操作,找出他们选择了哪个主题然后返回适当的视图。这样我在url上没有动作名称,因为url需要很简单,如:abc.com/cb/websiteID
。顺便说一下,每个主题/设计在文件夹中都有一个视图。
出于某些原因,这种方法并不适合我,我认为应该有更好的方法来做到这一点。这有什么不足之处吗?这种方法不好吗?有更好的方法吗?
如果我遗漏了一个细节,请告诉我,我会尽力解决。
答案 0 :(得分:3)
您是否拥有一组有限的主题,您的用户可以从中选择? 如果是这样,我会考虑使用每个主题的布局,只有一个视图并根据参数动态切换布局......
//in your controller
public ActionResult(int id) {
string layoutForThemeName = SomeService.GetThemeForUser(id);
ViewBag.LayoutName = layoutForThemeName
}
// in your view Index.cshtml
@{
Layout = ViewBag.LayoutName;
}
不要忘记Razor允许您从另一个布局继承一个布局,因此您可以使用脚本引用等为每个主题创建基本布局和布局。