在MVC 3.0中应用主题和样式

时间:2012-09-02 08:41:14

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

我来自ASP.NET Form开发,现在正在开发一个MVC 3.0应用程序,当客户登录时,她可以从下拉列表中选择她的不同帐户:

下拉列表包含:

  
      
  1. 本田汽车保险帐户
  2.   
  3. 家庭保险帐户
  4.   
  5. 福特汽车保险帐户。
  6.   

当她选择其中一个帐户时,目标网页会根据其历史详细信息数据等进行更改。该应用程序包含4个页面,每个帐户类型的内容都不同。

在ASP.NET表单中,我们可以使用主题和皮肤等根据用户选择的帐户在页面上应用样式。但是我不认为这似乎适用于MVC。

有人可以建议在MVC中实现上述目标的最佳途径是什么?

  
      
  1. 为每个页面创建一个控制器并分离每个帐户的视图?
  2.   
  3. 每个页面是否应该通过部分视图提供服务?
  4.   
  5. 还有其他建议吗?
  6.   

NB :从控制器发送的JSON结构对每种帐户类型都是唯一的,因为每个帐户都有不同的属性。

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:0)

我会为每个部分使用单独的控制器。然后在该控制器的View文件夹中,添加一个_ViewStart.cshtml文件并在其中放置

@{
    Layout = "~/Views/Honda/_Layout.cshtml";
}

这将指向此控制器的布局页面(本田控制器,但使用您想要的任何名称。)

然后在_Layout files中你可以添加不同的布局,css等。

这可能是让同一网站看到截然不同的部分的最简单方法。另外,您仍然可以使用默认的HomeAccount控制器来保留标准着陆页等。

您仍然可以使用部分视图以及此设置所需的任何其他内容。它甚至可能意味着最终用户的加载时间更快,因为他们的浏览器不必下载css和其他未使用的文件。

修改

以下是更多信息,ASP.NET MVC 3: Layouts with Razor from ScottGu's Blog

  

因为此代码在每个View的开头执行,所以我们不再   需要在任何单个视图文件中显式设置布局   (除非我们想覆盖上面的默认值)。

     

重要说明:因为_ViewStart.cshtml允许我们编写代码,所以我们   可以选择使我们的布局选择逻辑比仅仅更丰富   基本属性集。例如:我们可以改变布局模板   我们根据访问网站的设备类型使用 -   并为这些设备提供手机或平板电脑优化布局,以及   针对PC /笔记本电脑的桌面优化布局。或者如果我们正在构建一个   跨多个客户使用的CMS系统或通用共享应用程序   我们可以根据客户选择不同的布局(或者   他们的角色)访问网站时。

     

这可以实现很多UI灵活性。它还允许您更多   轻松编写一次视图逻辑,避免重复多次   地方。