C# 使用MasterPage架构,不同ChildPage页面刷新,能否避免MaterPage本身刷新

shoppo0505 2017-03-30 10:34:37
我现在有一个MasterPage,其中左侧有一个导航栏

现在我打开继承MasterPage的其中一个ChildPage,然后点击MasterPage导航栏跳转到其它ChildPage的话,整个页面会有个postback,然后刷新页面。导航栏本身很长,假设已经拉到最下面了,刷新后又会重置。怎么能避免导航栏重置的问题么?

我查了很多资料,都说是使用MasterPage没有办法避免,所以来论坛确认一下。
...全文
236 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
页面刷新导致的吗? 你设置一个全局变量,当出现因为子叶点击了而导致刷新的动作的时候修改这个值,然后再PageLoad的时候判定这个值,定位滚动条的位置。当然为了避免他一直在最下面 你肯定要改了滚动条位置之后。这是我想的思路,当然有这样的思路 http://blog.csdn.net/songkexin/article/details/49961951
  • 打赏
  • 举报
回复
另外,纠正一个基本概念。你的页面那不叫做“postback”,你已经重定向到其它页面去了。 asp.net 回发机制,完全可以使用 UpdatePanel 轻松解决滚动条问题。只不过回发的性能不好、用户操作体验远远赶不上 native 程序的操作体验罢了。
  • 打赏
  • 举报
回复
子页面从来也不是“继承 masterpage”的,你那个说法是错误的。子页面都是把 masterpage 当作用户控件,组合了 masterpage,而不是继承了 mastepage。 结果就是,主页面一旦重定向,整个页面就重定向到别的页面了,masterpage不过是子页面中的一个用户控件而已。 要想使用asp.net 的刷新机制并且保持滚动条位置(以及页面历史,类似于无刷新的用户体验,等等许多功能),需要使用 UpdatePanel。但是这就要求你的页面不能重定向。你应该把所有功能都做在一个页面上,例如用 MultiView 承载多个界面,或者动态加载不同的用户控件(但是动态加载时有些需要注意的处理流程比较复杂,我看你还是别试了)。 如果你仅仅是要定位到页面的某个位置,其实可以使用“锚点定位”方式。例如
http://localhost:1234/default.aspx?p=ab#add1
这里的#add1就是锚点定位方式。仅仅对于定位,可以这样。 如果要重定向时同时保持更多的、丰富的页面状态,自己重写一套asp.net机制则非常痛苦,使用 UpdatePanel 又需要你将所有页面集成在一个页面上,而“纯客户端无刷新”的静态web应用程序则更加需要你将所有 html 模板在同一个页面上实现。如果那么重视用户体验,那么将来就要开发不回发不刷新页面的 web 富客户端应用程序。
菜鸟的挣扎 2017-03-30
  • 打赏
  • 举报
回复
技术的问题,总有方法解决。只是真正的大神不在。 PS:我也不知道

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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