asp.net url重写

          由于需要我们经常会想将动态的页面做成伪静态的,或者在get传值的时候使其简洁明了(实现“可删节”的URL),这时我们需要用到URL重写。

   具体实现步骤(其中的一种实现方法):


  一、下载相关的DLL(ActionlessForm.dll和UrlRewriter.dll)

    http://download.csdn.net/detail/u012102306/9407075


  二、在项目中引用那两个DLL文件

    右击项目,点击Add Reference,选择Browse,然后选择相应的DLL,点击OK即可。


  三、添加browser文件

  1、右击项目,点击Add-New Item,选择Browser File(浏览器文件)。在生成的*.browser文件的browsers节点中添加如下代码:

<span style="font-family:Microsoft YaHei;font-size:12px;"><!--URLRewriter-->
    <browser refID="Default">
      <controlAdapters>
        <adapter controlType="System.Web.UI.HtmlControls.HtmlForm"
               adapterType="URLRewriter.Form.FormRewriterControlAdapter"/>
      </controlAdapters>
    </browser></span>

2、在配置文件web.config中system.web节点内添加httpModules

<span style="font-family:Microsoft YaHei;font-size:12px;"><!--URLRewriter
    type:HttpModule的标识号和类库名称
    name:取一个较为友好的名称-->
    <httpModules>
      <add type="URLRewriter.RewriterModule, URLRewriter" name="RewriterModule"/>
    </httpModules></span>

3、然后就是在configuration节点下添加(必须是第一个子节点):

<span style="font-family:Microsoft YaHei;font-size:12px;"><!--URLRewriter-->
  <configSections>
    <section name="CustomConfiguration" type="URLRewriter.Config.UrlsSection, URLRewriter"/>
  </configSections>
  <CustomConfiguration>
    <urls>
      <!--([\w]+)表示,1到n个字母或数字或下划线或汉字组成-->
      <add virtualUrl="~/Default/([\w]+)*" destinationUrl="~/Default.aspx?username=$1"/>
      <add virtualUrl="~/Default/([\w]+)*/([\w]+)*" destinationUrl="~/Default.aspx?newsTypeId=$1&newsWhere=$2"/>
      <add virtualUrl="~/page/user/login" destinationUrl="~/page/user/login.aspx"/>
      <add virtualUrl="~/page/user/registe" destinationUrl="~/page/user/registe.aspx"/>
      <add virtualUrl="~/page/index" destinationUrl="~/page/index.aspx"/>
    </urls>
  </CustomConfiguration></span>


如上,在不需要传参的情况下,可以直接在virtualUrl里面写要转化地址,destinationUrl为真实地址。在需要传参的情况下,用正则表达式代替,多个参数,在destinationUrl中用&分隔,在virtualUrl中用自己规定的符号代替,我是用的‘/’分隔的。

  4、测试,在Default的Page_Load中添加如下代码

<span style="font-family:Microsoft YaHei;font-size:12px;">if (!string.IsNullOrEmpty(Request.Params["newsTypeId"]))
{
    string newsId = Request.Params["newsTypeId"].ToString();
    string newsWhere = Request.Params["newsWhere"].ToString();
    Response.Write("newsid:" + newsId + "<br/>newsWhere:" +newsWhere);
} </span>


结果如下:


5、加入窗体回传保持的组件:

  在你的这个页面中加入:

<span style="font-family:Microsoft YaHei;font-size:12px;"><%@ Register TagPrefix="skm" Namespace="ActionlessForm" Assembly="ActionlessForm" %>
再把你的<Form...>改为:
<skm:Form id="你的表单名" method="post" runat="server">
.....
</skm:Form></span>


 

6、在IIS里配置(网上相关内容很多就不再赘述)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值