【发布时间】:2015-04-05 10:17:03
【问题描述】:
为简单起见,想象一个网站的菜单左侧有三个按钮,右侧有一个内容区域。按钮将内容加载到内容区域。
当一个按钮被点击时,我想要:
1) 相应更改的 URL。这意味着如果按钮是“Foo”、“Bar”和“Baz”。当点击第三个按钮时,我希望 URL 类似于“http://localhost/mySite/Baz/ShowBazs”。
2) 按钮应使用 CSS 类突出显示。 (在发出 AJAX 请求之前使用一点 jquery)
3) (仅?)应该加载内容区域
加载视图
- 好的
- 不好。菜单重新加载到从头开始
-
半正常。 菜单重新加载到从头开始。内容区域可以很好地加载到
@RenderBody()
加载局部视图
1) 不好。 URL 没有任何反应
2) 好的。菜单未重新加载
3) 好的。仅加载内容区域。
我知道设计所有网站没有单一的答案。只是觉得我在这里错过了一些好东西。
您认为最好的解决方案是什么?为什么?
目前我只在内容区域中使用部分视图。菜单很好,内容只被加载并且真的很好。但是 URL 保持不变,根本不使用 Views 感觉不对。
我最好的想法是重写网站以使用视图,然后让视图负责设置突出显示的按钮。
【问题讨论】:
-
所以您基本上已经有了一个单页应用程序?你是在使用 Knockout 或 Angular 之类的框架,还是只使用纯 JS?我认为您仍然应该使用部分视图,如果有任何东西可以分解和分离您网站的组件,否则您最终会得到大量视图。
-
我从一个 MVC 项目开始,而不是 SPA。我没有使用 Knockout 或 Angular。纯粹是 MVC 5、Javascript、jQuery、Razor、.cshtml.. 我一直在考虑可以重用局部视图的地方。就像在内容区域的某个地方一样。不适用于孔内容区域。感觉不对。
-
虽然它们的主要优势是可重用性(类似于 Web 表单用户控件),但它们还可以帮助分解更大的视图。
-
杰普。但我没有一个更大的视图开始。我只有一个大的局部视图开始。这似乎是错误的。
-
如果您通过 jQuery 从服务器返回它们,那是正确的。如果您担心部分视图太大,请考虑将它们拆分为单独的部分视图。
标签: ajax asp.net-mvc asp.net-mvc-4 asp.net-mvc-5 unobtrusive-javascript