2012-09-02 37 views
0

我来自ASP.NET表单开发,现在开发一个MVC 3.0应用程序,其中当她登录客户可以从下拉菜单中选择不同的她倒帐:应用主题和风格的MVC 3.0

下拉包含:

  1. 本田汽车保险账户
  2. 首页险账户
  3. 福特汽车保险账户。

当她选择账户之一,她的历史细节数据等应用程序包含4个它针对每个帐户类型不同的内容更多的网页登陆页面的变化。

在ASP.NET窗体中,我们可以使用主题和皮肤等来基于用户选择的帐户在页面上应用样式。不过,我不认为这似乎在MVC上工作。

任何人都可以请建议什么是最好的方式来实现MVC以上?

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

NB:从控制器发送的JSON结构是彼此不同的账户类型作为每个帐户具有不同的特性。

非常感谢您的帮助。

回答

0

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

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

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

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

这可能是最简单的方法,让同一个网站的外观截然不同。另外,您仍然有您的默认HomeAccount控制器保持标准的着陆页等

,您仍然可以使用部分的意见,和其他任何你将在此设置喜欢。它甚至可能意味着最终用户的加载时间更快,因为他们的浏览器不必下载它不使用的css和其他文件。

编辑

这里是一个位的更多信息,ASP.NET MVC 3: Layouts with Razor from ScottGu's Blog

因为这个代码执行的每个视图的开始,我们不再 需要明确设置布局,我们的任何个人查看文件 (除非我们想覆盖上面的默认值)。

重要提示:由于_ViewStart.cshtml允许我们编写代码,我们 可以选择使我们的布局选择逻辑更丰富,而不仅仅是基本属性集 。例如:我们可以改变我们使用取决于什么类型的设备访问该网站的布局模板 - ,有一个电话或者这些设备的平板电脑优化的布局,并为PC /笔记本电脑一 桌面优化的布局。或者,如果我们要建立一个跨多个客户使用的 CMS系统或公共共享应用 我们可以选择不同的布局,根据不同的客户使用(或 自己的角色)访问该站点时。

这使得很多的UI灵活性。它也可以让你更容易 编写视图逻辑一次,并避免重复它在多个 地方。

+0

谢谢。 _Layout.cshtml与母版页相同,它不应该只是一个,而不是每个视图重复? –

+0

你可以有多个,只要把它们放在你工作的控制器视图的文件夹中即可。否则,你必须在根级“_Layout”页面有一些逻辑。 MVC会自动使用控制器视图文件夹中的布局文件,而不是默认的根文件夹。另外,如果您有没有布局的视图,它将只使用默认的根视图。 –