|
URL 重写就是把URL地址重新改写(汗^_^)。详情:http://www.microsoft.com/china/msdn/library/webservices/asp.net/URLRewriting.mspx
优点:把url缩短等
用法:1.下载ms的URLRewrite.dll,放到你的bin下
2.在web.config里设置如下:
<?XML version="1.0" encoding="utf-8" ?> <configuration>
<configSections>
<section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />
</configSections>
<RewriterConfig>
<Rules>
<RewriterRule> <LookFor>~/d(\d+)\.ASPx</LookFor> <SendTo>~/default.aspx?id=$1</SendTo> </RewriterRule>
</Rules>
</RewriterConfig>
<system.web>
<httpHandlers>
<add verb="*" path="*.aspx"
type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
</httpHandlers>
然后在cs里写:
private void Page_Load(object sender, System.EventArgs e) { // 在此处放置用户代码以初始化页面 Response.Write(Request.QueryString["id"]+"<BR>"); Response.Write("haha"); }
只要输入
localhost/overred/d123.aspx(注意:开头必须为d,后为数字) 其实这个d123.aspx是虚拟的,并不是实际存在的。只要符合格式就行。
他就会跳到http://localhost/overred/default.aspx
而且他在default里可以捕捉一些参数比如id,就是你的d后的数字(后必须为数字),这样你就可以显示id为123的文章。
在重写后的url里如果产生回发将会传递到d123.aspx,这样用户在点button时会看到哪个实际的地址,msdn上说的:但从用户的角度考虑,如果单击按钮时突然看到 URL 更改会使他们感到不安。
可见ms把客户捧为他的上帝!(真的?#¥%……—*)
继续引用ms:
出现这种情况的原因是:在呈现 Web 窗体时,它会将其操作属性直接设置为 Request 对象中文件路径的值。当然,在呈现 Web 窗体时,URL 已从 /ProdUCts/Beverages.aspx 重写为 ListProductsByCategory.aspx?CategoryID=1,这表明 Request 对象报告用户要访问 ListProductsByCategory.aspx?CategoryID=1。只需使服务器端窗体不呈现操作属性即可解决此问题。(默认情况下,如果窗体不包含操作属性,浏览器将会回发。)
不幸的是,Web 窗体不允许您明确指定操作属性,也不允许您设置某些属性以禁用操作属性的呈现。因此,我们必须自己来扩展 System.Web.HtmlControls.HtmlForm 类,覆盖 RenderAttribute() 方法并明确指出它不会呈现操作属性。
由于继承功能,我们可以获得 HtmlForm 类的所有功能,并且只需添加几行代码即可获得所需的行为。以下显示了自定义类的完整代码:
namespace ActionlessForm { public class Form : System.Web.UI.HtmlControls.HtmlForm { protected override void RenderAttributes(HtmlTextWriter writer) {
上一篇:IE7将取消用户名密码验证 采用新型识别技术
下一篇:关于C#中枚举打印机
|