ASP.Net MVC动态切换视图

时间:2013-06-08 01:05:47

标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-4 razor

我有一个ASP.Net MVC 4应用程序,用户可以为其托管的单页网站(在此应用程序中)选择主题或设计。起初,我想用内置区域做这个,但由于一些应用程序限制,我决定不使用该方法。我认为这样做的方式(到目前为止工作)是将用户发送到控制器的索引操作,找出他们选择了哪个主题然后返回适当的视图。这样我在url上没有动作名称,因为url需要很简单,如:abc.com/cb/websiteID。顺便说一下,每个主题/设计在文件夹中都有一个视图。

出于某些原因,这种方法并不适合我,我认为应该有更好的方法来做到这一点。这有什么不足之处吗?这种方法不好吗?有更好的方法吗?

如果我遗漏了一个细节,请告诉我,我会尽力解决。

1 个答案:

答案 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允许您从另一个布局继承一个布局,因此您可以使用脚本引用等为每个主题创建基本布局和布局。