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

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

提问人:radbyx 提问时间:2/5/2015 更新时间:2/6/2015 访问量:724

问:

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

当点击一个按钮时,我想要:

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

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

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


加载视图

  1. 还行
  2. 不行。菜单重新加载到零开始
  3. 半OK。菜单重新加载到零开始。内容区域可以很好地加载到@RenderBody()

加载局部视图

1)不行。URL 发生意外

2) 好的,菜单没有重新加载

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


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

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

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

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

ajax asp.net-mvc-5 不显眼的javascript

评论

0赞 Mathew Thompson 2/5/2015
所以你基本上有一个单页应用程序?您使用的是 Knockout 或 Angular 等框架,还是只是纯 JS?我认为您仍然应该使用部分视图,如果有的话来分解和分离您网站的组件,否则您最终会得到大量视图。
0赞 radbyx 2/5/2015
我从MVC项目开始,而不是SPA。我不使用 Knockout 或 Angular。纯粹的 MVC 5、Javascript、jQuery、Razor、.cshtml。我总是想到可以重复使用的地方的部分视图。就像在内容区域的某个地方一样。不适用于孔内容区域。感觉不对劲。
0赞 Mathew Thompson 2/5/2015
虽然它们的主要优点是可重用性(类似于 Web 窗体用户控件),但它们也可以帮助分解更大的视图。
0赞 radbyx 2/5/2015
咔嚓咔��但我没有更大的视野可以开始。我只有一个大的局部视图开始。这似乎是不对的。
0赞 Mathew Thompson 2/5/2015
如果您通过jQuery从服务器返回它们,则不会,这是正确的。如果您担心分部视图太大,请考虑将它们拆分为单独的分部视图。

答:

1赞 Chris Pratt 2/6/2015 #1

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