我来自ASP.NET Form开发,现在正在开发一个MVC 3.0应用程序,当客户登录时,她可以从下拉列表中选择她的不同帐户:
下拉列表包含:
- 本田汽车保险帐户
- 家庭保险帐户
- 福特汽车保险帐户。
醇>
当她选择其中一个帐户时,目标网页会根据其历史详细信息数据等进行更改。该应用程序包含4个页面,每个帐户类型的内容都不同。
在ASP.NET表单中,我们可以使用主题和皮肤等根据用户选择的帐户在页面上应用样式。但是我不认为这似乎适用于MVC。
有人可以建议在MVC中实现上述目标的最佳途径是什么?
- 为每个页面创建一个控制器并分离每个帐户的视图?
- 每个页面是否应该通过部分视图提供服务?
- 还有其他建议吗?
醇>
NB :从控制器发送的JSON结构对每种帐户类型都是唯一的,因为每个帐户都有不同的属性。
非常感谢你的帮助。
答案 0 :(得分:0)
我会为每个部分使用单独的控制器。然后在该控制器的View文件夹中,添加一个_ViewStart.cshtml
文件并在其中放置
@{
Layout = "~/Views/Honda/_Layout.cshtml";
}
这将指向此控制器的布局页面(本田控制器,但使用您想要的任何名称。)
然后在_Layout files
中你可以添加不同的布局,css等。
这可能是让同一网站看到截然不同的部分的最简单方法。另外,您仍然可以使用默认的Home
和Account
控制器来保留标准着陆页等。
您仍然可以使用部分视图以及此设置所需的任何其他内容。它甚至可能意味着最终用户的加载时间更快,因为他们的浏览器不必下载css和其他未使用的文件。
修改强>
以下是更多信息,ASP.NET MVC 3: Layouts with Razor from ScottGu's Blog
因为此代码在每个View的开头执行,所以我们不再 需要在任何单个视图文件中显式设置布局 (除非我们想覆盖上面的默认值)。
重要说明:因为_ViewStart.cshtml允许我们编写代码,所以我们 可以选择使我们的布局选择逻辑比仅仅更丰富 基本属性集。例如:我们可以改变布局模板 我们根据访问网站的设备类型使用 - 并为这些设备提供手机或平板电脑优化布局,以及 针对PC /笔记本电脑的桌面优化布局。或者如果我们正在构建一个 跨多个客户使用的CMS系统或通用共享应用程序 我们可以根据客户选择不同的布局(或者 他们的角色)访问网站时。
这可以实现很多UI灵活性。它还允许您更多 轻松编写一次视图逻辑,避免重复多次 地方。