asp.net网页智能导航SmartNavigation的替代实现方式(C#保存)

    技术2022-05-19  29

     

    在开发asp.net项目过程中,经常遇到页面智能导航的问题。在最开始使用asp.net提供的SmartNagivation,但是因为SmartNavigation是通过在网页中嵌入IFrame的方式实现的,经常会出问题。如在使用Frame的页面中使用会造成样式页失效,和校验控件一起使用时会有问题等等。从网上也搜集了很多资料,大部分都是通过javascript来保存网页当前视图位置的方式来实现的,使用起来经常还是会出现页面抖动。 偶尔发现了微软的一个示例中的解决方法,代码如下:         private void RetainScrollPosition()        {            string saveScrollPosition=string.Empty;            string setScrollPosition=string.Empty;             RegisterHiddenField("__SCROLLPOS", "0");             saveScrollPosition+=("<script language='javascript'>");            saveScrollPosition+=("function saveScrollPosition() {");            saveScrollPosition+=(" document.forms[0].__SCROLLPOS.value = thebody.scrollTop;");             saveScrollPosition+=("}");            saveScrollPosition+=("thebody.οnscrοll=saveScrollPosition;");            saveScrollPosition+=("</script>");             RegisterStartupScript("saveScroll", saveScrollPosition.ToString());             if(Page.IsPostBack)            {                 setScrollPosition+=("<script language='javascript'>");                setScrollPosition+=("function setScrollPosition() {");                string[] GetVarStr=Page.Request.Params.GetValues("__SCROLLPOS");                setScrollPosition+=(" thebody.scrollTop = " + GetVarStr[0] +";");                 setScrollPosition+=("}");                 setScrollPosition+=("thebody.οnlοad=setScrollPosition;");                 setScrollPosition+=("</script>");                 RegisterStartupScript("setScroll", setScrollPosition.ToString());             }         } 在Page_load中调用该函数,另外,在aspx页面中将body的id起名为thebody 大体上还是通过ViewState保存当前位置的方式来实现的,但是很好用。

     


    最新回复(0)