问题描述
有没有遇到过控件事件提交地址错误的问题应用了url重写比如说a1234.html?type=alter可以正确解析为a.aspx?id=1234&type=alter但是如果点击了页面上的控件回传地址会变成a1234.html?id=1234&type=alter解析为a.aspx?id=1234&id=1234&type=alter导致无法得到id参数00~能想到的办法是。。去掉伪静态但是不现实。。修改页面去控件改用form提交或ajax提交。。工作量好大拜求
解决方案
解决方案二:
this.h_id=Request.QueryString["id"]!=null?int.TryParse(Request.QueryString["id"].ToString(),outnum)?num:0:0;
其实是因为是这样获取参数才取不到参数的==b
解决方案三:
那改下获取方式?intid=Request.QueryString.GetValues("id")!=null&&Request.QueryString.GetValues("id").Length>0?Convert.ToInt32(Request.QueryString.GetValues("id")[0]):0;或者伪静态再增加一条规则:已带id参数的,转址就不再加id参数
解决方案四:
修改页面控件重写提交方法
解决方案五:
引用2楼qqm05的回复:
那改下获取方式?intid=Request.QueryString.GetValues("id")!=null&&Request.QueryString.GetValues("id").Length>0?Convert.ToInt32(Request.QueryString.GetValues("id")[0]):0;或者伪静态再增加一条规则:已带id参数的,转址就不再加id参数
参数取到了但还是不知道为什么回传地址会变。。
解决方案六:
引用4楼Aylein的回复:
Quote: 引用2楼qqm05的回复:
那改下获取方式?intid=Request.QueryString.GetValues("id")!=null&&Request.QueryString.GetValues("id").Length>0?Convert.ToInt32(Request.QueryString.GetValues("id")[0]):0;或者伪静态再增加一条规则:已带id参数的,转址就不再加id参数参数取到了但还是不知道为什么回传地址会变。。
click事件中给地址加了id参数?没有页面代码不好判断
解决方案七:
好乱。修改页面控件重写提交方法。不要乱写代码。
解决方案八:
重写下基类publicclassUrlReWritePageBase:Page{protectedoverridevoidRender(HtmlTextWriterwriter){if(writerisSystem.Web.UI.Html32TextWriter){writer=newFormFixerHtml32TextWriter(writer.InnerWriter);}else{writer=newFormFixerHtmlTextWriter(writer.InnerWriter);}base.Render(writer);}}internalclassFormFixerHtml32TextWriter:System.Web.UI.Html32TextWriter{privatestring_url;//假的URLinternalFormFixerHtml32TextWriter(TextWriterwriter):base(writer){_url=HttpContext.Current.Request.RawUrl;}publicoverridevoidWriteAttribute(stringname,stringvalue,boolencode){if(_url!=null&&string.Compare(name,"action",true)==0){value=_url;}base.WriteAttribute(name,value,encode);}}internalclassFormFixerHtmlTextWriter:System.Web.UI.HtmlTextWriter{privatestring_url;internalFormFixerHtmlTextWriter(TextWriterwriter):base(writer){_url=HttpContext.Current.Request.RawUrl;}publicoverridevoidWriteAttribute(stringname,stringvalue,boolencode){if(_url!=null&&string.Compare(name,"action",true)==0){value=_url;}base.WriteAttribute(name,value,encode);}}
解决方案九:
如果不反思,那么一个谎之后,用五个谎去圆,理由总是说“不说谎是不现实的”。