利用URLRewriter.dll伪静态时一个页面(news.aspx)可以这样写
<RewriterConfig>
    <Rules>
      <RewriterRule>
        <LookFor>~/n_(\d+)\.html</LookFor>
        <SendTo>~/news.aspx?newsId=$1</SendTo>
      </RewriterRule>
    </Rules>
  </RewriterConfig>
但如果我还有>~/news.aspx?mId=??,和video.aspx?videoId=??我该怎样写?
注意:news.aspx一个传值是newsId,另外一个是mId
谁帮帮我,十分感谢!

解决方案 »

  1.   

    <RewriterConfig>
      <Rules>
      <RewriterRule>
      <LookFor>~/n_(\d+)\.html</LookFor>
      <SendTo>~/news.aspx?newsId=$1</SendTo>
      </RewriterRule> <RewriterRule>
      <LookFor>~/aaaa_(\d+)\.html</LookFor>
      <SendTo>~/news.aspx?mId=$1</SendTo>
      </RewriterRule> <RewriterRule>
      <LookFor>~/bbbb_(\d+)\.html</LookFor>
      <SendTo>~/video.aspx?videoId=$1</SendTo>
      </RewriterRule>
      </Rules>
      </RewriterConfig>
      

  2.   

    相当于用aaaa和bbbb区分一下新加的两条规则.
      

  3.   

    谢谢各位了,但是我现在又有新问题了,当页面里面有服务器button控件时点击了button链接地址又变成了动态的了news.aspx?mId=11
      

  4.   

    解决方案有x种1.放弃这个重写组件,用mvc或者手写实现(比较根本,也比较麻烦)
    2.记得可以重写_browser form呈现(只见过,没有用过)
    3.可能有原生的或者其他方法(比如使用ajax,避免整页刷新)
    4.
      

  5.   


    老问题了,解决办法重写Page,让你的页面继承自类SW.PageHandler.MyPage using System;
    using System.IO;
    using System.Web;
    using System.Web.UI;
    using System.Threading;namespace SW.PageHandler
    {
        public class MyPage : System.Web.UI.Page
        {
            /// <summary>
            /// 调用自己自定义的HtmlTextWriter来渲染页面
            /// </summary>
            /// <param name="writer"></param>
            protected override void Render(HtmlTextWriter writer)
            {
                if (writer is System.Web.UI.Html32TextWriter)
                {
                    writer = new FormFixerHtml32TextWriter(writer.InnerWriter);
                }
                else
                {
                    writer = new FormFixerHtmlTextWriter(writer.InnerWriter);
                }
                base.Render(writer);
            }
        }
        /// <summary>
        /// 自定义HtmlTextWriter
        /// </summary>
        internal class FormFixerHtml32TextWriter : System.Web.UI.Html32TextWriter
        {
            private string _url; // 假的URL        internal FormFixerHtml32TextWriter(TextWriter writer)
                : base(writer)
            {
                _url = HttpContext.Current.Request.RawUrl;
            }        public override void WriteAttribute(string name, string value, bool encode)
            {
                if (_url != null && string.Compare(name, "action", true) == 0)
                {
                    value = _url;
                }
                base.WriteAttribute(name, value, encode);        }
            
        }
        /// <summary>
        /// 自定义HtmlTextWriter
        /// </summary>
        internal class FormFixerHtmlTextWriter : System.Web.UI.HtmlTextWriter
        {
            private string _url;
            internal FormFixerHtmlTextWriter(TextWriter writer)
                : base(writer)
            {
                _url = HttpContext.Current.Request.RawUrl;
            }        public override void WriteAttribute(string name, string value, bool encode)
            {
                if (_url != null && string.Compare(name, "action", true) == 0)
                {
                    value = _url;
                }
                base.WriteAttribute(name, value, encode);
            }
        }
    }
      

  6.   

    public partial class _Default : SW.PageHandler.MyPage//继承MyPage
    {
        protected void Page_Load(object sender, EventArgs e)
        {