摘要:例如我们将一个地址"showpost.aspx?postid=1000"重写为"posts/1000.aspx",如果这个页面中有个表单(form),那么输出到浏览器的HTML中,这个表单的action属性为<form action="showpost.aspx?postid=1000">而不是我们期望的<form action="1000.aspx">,这样就会暴露我们的真实地址,而且感觉也不爽。 我们可以通过自定义页面基类,重写默认的HtmlTextWriter方法,重写属性输出WriteAttribute(string name, string value, bool encode)方法,当输出action时,将action属性的值强制转换为当前虚URL(HttpContext.Current.Request.RawUrl,上面的1000.aspx) 最后就是让所有的页面都调用这个基类,修改一下Web.config就好了<!-- Openlab.Controls.OLPage为页面基类,Openlab.Controls为基类所在dll --><pages pageBaseType="Openlab.Controls.OLPage, Openlab.Controls"/>附页面基类完整代码(参考CS代码完成):using System; using System.IO; using System.Web; using System.Web.UI; namespace Openlab.Controls ...{ /**//// <summary> /// 页面基类 /// </summary> public class OLPage : Page ...{ public OLPage() ...{ } Render#region Render /**//// <summary> ......[阅读全文]