菜单应该在 MVC 5 中加载视图还是部分视图?

Should a Menu load a Views or a Partial Views in MVC 5?

为简单起见,假设一个站点有一个菜单,左侧有三个按钮,右侧有一个内容区域。这些按钮将内容加载到内容区域。

单击按钮时我想要:

1) URL 相应改变。这意味着如果按钮是 "Foo"、"Bar" 和 "Baz"。我希望 URL 类似于“http://localhost/mySite/Baz/ShowBazs,当单击第三个按钮时。

2) 该按钮应使用 CSS class 突出显示。 (在发出 AJAX 请求之前有一点 jquery)

3)(仅?)应该加载内容区域


加载视图

  1. 好的
  2. 不正常。 菜单重新加载到初始状态
  3. 还行。 菜单重新加载到初始状态。内容区域可以很好地加载到 @RenderBody()

加载局部视图

1) 不正常。 URL

什么都没发生

2) 好的。 菜单未重新加载

3) 好的。 仅加载内容区域。


我知道设计所有网站没有单一的答案。就是觉得少了点好东西

您认为这里的最佳解决方案是什么?为什么?

目前我只在内容区域使用局部视图。菜单很好,内容只被加载而且真的很好。但是 URL 保持不变,根本不使用视图感觉不对。

我最好的想法是重写站点以使用视图,然后让视图负责设置突出显示的按钮。

实现所有设计要求的唯一可能方法是通过 History API in HTML 5 (in other words, it will only work in modern browsers: IE 10+ and virtually every other browser known to man). There's a polyfill for supporting IE 9 and below: History.js。但是,它在那些浏览器中使用 URL 片段 (#foo),因此 URL 结构不会 完全 相同。不过,无论如何,这是一个很好的脚本,因为 History API 在支持它的浏览器中的实现方式有所不同,并且 polyfill 有助于使所有内容保持一致。