菜单应该加载MVC 5中的视图或部分视图吗



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

当点击按钮时,我想要:

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

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

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


加载视图

  1. 不好。菜单重新加载到原来的状态
  2. 半确定。菜单重新加载,恢复原状。内容区精细加载到@RenderBody()

加载部分视图

1) 不正常。URL 没有发生任何事情

2) 好的菜单未重新加载

3) 好的只有内容区域被加载。


我知道没有一个单一的答案来设计所有的网站。只是感觉我错过了一些好东西。

在你看来,最好的解决方案是什么?为什么?

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

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

实现所有设计要求的唯一可能方法是通过HTML5中的History API(换句话说,它只适用于现代浏览器:IE 10+和几乎所有其他已知的浏览器)。有一个polyfill支持IE 9及以下版本:History.js。然而,它在这些浏览器中使用URL片段(#foo),因此URL结构不会完全相同。无论如何,这是一个很好的脚本,因为在支持它的浏览器中,History API的实现有些不同,而polyfill有助于保持一切都在同一个基础上。

最新更新