菜单是否应在MVC 5中加载视图或部分视图?

时间:2015-02-05 14:05:03

标签: ajax asp.net-mvc asp.net-mvc-4 asp.net-mvc-5 unobtrusive-javascript

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

单击按钮时,我想:

1)相应更改的URL。这意味着如果按钮是“Foo”,“Bar”和“Baz”。当点击第3个按钮时,我希望URL与“http://localhost/mySite/Baz/ShowBazs类似。”

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

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


加载视图

  1. 确定
  2. 不行。菜单重新开始重新审核
  3. 半好。菜单会重新回到头上。内容区域可以很好地加载到@RenderBody()

  4. 加载部分视图

    1)不行。网址没有发生

    2)确定。菜单不是重新上传

    3)确定。只有内容区域才有用。


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

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

    目前我只在“内容”区域中使用“部分视图”。菜单很好,只有内容加载,它真的很好。但是URL保持不变,并且根本不使用视图会感觉不对。

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

1 个答案:

答案 0 :(得分:1)

实现所有设计要求的唯一可能方法是通过History API in HTML 5(换句话说,it will only work in modern browsers:IE 10+以及人工已知的几乎所有其他浏览器)。有一个支持IE 9及以下版本的polyfill:History.js。但是,它在这些浏览器中使用网址片段(#foo),因此网址结构不会完全相同。但是,无论如何,它都是一个很好的脚本,因为在支持它的浏览器中,历史API的实现方式有所不同,而且polyfill有助于保持所有内容的相同基础。