0

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

下拉列表包含:

  1. 本田汽车保险账户
  2. 家庭保险账户
  3. 福特汽车保险账户。

当她选择其中一个帐户时,登录页面会随着她的历史详细信息数据等而更改。该应用程序包含另外 4 个页面,每个页面类型都有不同的内容。

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

谁能建议在 MVC 中实现上述目标的最佳方法是什么?

  1. 为每个页面创建一个控制器并为每个帐户创建单独的视图?
  2. 每个页面内容是否应该由部分视图提供?
  3. 还有什么建议吗?

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

非常感谢您的帮助。

4

1 回答 1

0

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

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

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

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

这可能是在同一站点上获得截然不同的外观部分的最简单方法。另外,您仍然可以使用默认值HomeAccount控制器来保持标准登录页面等。

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

编辑

这里有更多信息,ASP.NET MVC 3: Layouts with Razor 来自 ScottGu 的博客

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

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

这使得 UI 具有很大的灵活性。它还允许您更轻松地编写一次视图逻辑,并避免在多个地方重复它。

于 2012-09-02T09:37:40.967 回答