asp.net mvc 项目用razor视图,如何达到下图这效果。

d383137359 2018-11-23 05:01:26

如图,很常见的一个MVC问题。 左边是菜单,右边是内容页。左边菜单点击时,右边内容跟着变化,这很容易。

关键,关键:URL地址也跟着在变。

目前想到的两种方法:

1. 左边不刷新,只是右边刷新。内容页套一个AJAX来请求内容。MVC返回分部视图。 这样左边选中某项的样式可以保存不动。但顶上的URL不会跟着变。更别说让他选中某一个div了。

2. 整页一起刷新,左边记录上次选中的某一项。等请求内容 return view()时,重新渲染整个页面。但这样应该不太好。左边的菜单数据总得反复获取。很浪费服务器资源不说,每次请求结束后还有个刷新展开效果。用户体验很不好。

我感觉下面图片这两种方式都不是。各位可以去体验下。欢迎指导。

可以发链接不?非广告。为问题描述得更清楚

http://smartprogram.baidu.com/docs/develop/api/net_websocket/#connectSocket/


...全文
608 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
d383137359 2018-12-07
  • 打赏
  • 举报
回复
引用 1 楼 tangyanzhi1111 的回复:
左边点击在JS里面调用 mvc partialview刷新右边,这个很简单 有什么问题?
你说的是用AJAX请求吧。只刷新右边。但URL跟着在变。如果是AJAX请求,URL就不会变了。
d383137359 2018-12-07
  • 打赏
  • 举报
回复
引用 15 楼 囧 的回复:
http://smartprogram.baidu.com/docs/search.xml 百度的做法是把所有数据加载到前端,然后再搜索相关的内容加载,都不用再请求后台
这个链接是什么意思,没明白 把所有数据加载到前端 再搜索,这是锚记所做的,点击每个子菜单时,还是请求了后台的。点了后URL都变了你可以试试
2018-12-07
  • 打赏
  • 举报
回复
http://smartprogram.baidu.com/docs/search.xml 百度的做法是把所有数据加载到前端,然后再搜索相关的内容加载,都不用再请求后台
d383137359 2018-12-07
  • 打赏
  • 举报
回复
引用 3 楼 正怒月神 的回复:
你搜索一下 a标签的锚记
锚记为了选择DIV明白了,那个左边的菜单是每点一个子页就要重新组织一次吗? 本来我想用session缓存某个账号的菜单信息的,但如果同一账号多个客户端登陆。在退出时处理又会找不到是哪个session. 请问一下,一个新的网页客户端访问时,有没有一个不变的唯一标识来区分。例如sessionid之类的
  • 打赏
  • 举报
回复
引用 7 楼 d383137359 的回复:
还有多个body嵌套,因为一个站做下来,常常不止一套布局。经常这页是树型菜单,那页是顶部的其他菜单等情况
对的,这就是有远见之后才会搞明白的差别! 为什么说 asp.net mvc 也不行呢?因为它仍然是服务器端的一套概念的简单地拼凑,没有给你纯客户端编程框架,所以你在复杂一点的 web 企业级需求设计上会快遇到天花板。而不是自由自在地搞前端开发。
sp1234_maJia 2018-11-25
  • 打赏
  • 举报
回复
我们以 ts 代码为例(js 基本上一样),可以捕获锚点改变事件来驱动界面
window.onhashchange = (ev) => {
    var hash = window.location.hash;
    if (hash && hash.length > 1) {
        ..........
    }
};
这里的知识体系的差别就能一目了然,纯粹前端概念。 你贴出的那个页面,在我看来其实效率很差,用户体验很不好。但是作为一个简单的教学课程页面,可能也就这样简单地设计就可以了。 对于右边是复杂的企业管理页面的程序,那么有边下载的是很短的一个 html 片段(模板),然后前端绑定到一个 ViewModel 对象上,随着这个实实在在的 VM 对象的内容变化,于是模板生产出来丰富的 DOM 内容。 这是前端程序概念为基本设计思路的!
  • 打赏
  • 举报
回复
你编写 winform 窗体程序时,用户在窗体上点击一下控件、输入什么东西,都不纠结于跑到服务器上去编程实现。都是在 winform 窗体程序内部实现了。 前端也是如此。一个 html 就是一个应用程序,不用 asp.net 端去做界面生成相关操作。asp.net 顶多充当一下初使 html 的下载网站,然后提供点数据服务接入客户端功能就行了。
  • 打赏
  • 举报
回复
你的“方法一、方法二”这其实只局限于 asp.net 程序员思路中,对 web 应用程序前端开发设计来说,反而是个旁门左道。 真正的前端设计开发,一个 html 应用程序几小时都不刷新页面,不断地自动下载新模板,前端有数十万 ViewState(或者叫 ViewModel) 状态数据自动化管理,举手之劳,前端界面不论是作为整个页面的模板还是作为嵌入模板中的子模版都是自动地管理的,不论是多少 js 库链接在一起按需下载都是自动完成的。 这就好像是开发 winform 复杂窗体管理软件,编写界面上的控件操作时难道还要纠结什么服务器吗?并不需要。所以前端开发在表现层面的设计就是前端开发技术,根本不用 asp.net。
d383137359 2018-11-24
  • 打赏
  • 举报
回复
引用 1 楼 tangyanzhi1111 的回复:
左边点击在JS里面调用 mvc partialview刷新右边,这个很简单 有什么问题?
还有多个body嵌套,因为一个站做下来,常常不止一套布局。经常这页是树型菜单,那页是顶部的其他菜单等情况
d383137359 2018-11-24
  • 打赏
  • 举报
回复
引用 1 楼 tangyanzhi1111 的回复:
左边点击在JS里面调用 mvc partialview刷新右边,这个很简单 有什么问题?
就是没太明白这点。有实例没
d383137359 2018-11-24
  • 打赏
  • 举报
回复
引用 4 楼 小小小的程序员 的回复:
比如,你的首页叫index,在index里弄个iframe,导航写在index页里,然后在iframe里打开,这样不就是你要求的结果吗
你说这种情况,URL没变法跟着变。URL的真实地址是在iframe中的。和浏览器的URL无关。我需要浏览器的地址栏显示真实URL
  • 打赏
  • 举报
回复
比如,你的首页叫index,在index里弄个iframe,导航写在index页里,然后在iframe里打开,这样不就是你要求的结果吗
正怒月神 版主 2018-11-23
  • 打赏
  • 举报
回复
你搜索一下 a标签的锚记
正怒月神 版主 2018-11-23
  • 打赏
  • 举报
回复
他这个只是一个锚记
江湖评谈 2018-11-23
  • 打赏
  • 举报
回复
左边点击在JS里面调用 mvc partialview刷新右边,这个很简单 有什么问题?

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧