手机
当前位置:查字典教程网 >编程开发 >asp.net教程 >asp.net url重写后页面回传问题
asp.net url重写后页面回传问题
摘要:具体办法如下:可以通过自定义页面基类,重写默认的HtmlTextWriter方法,重写属性输出WriteAttribute(stringna...

具体办法如下:可以通过自定义页面基类,重写默认的HtmlTextWriter方法,重写属性输出WriteAttribute(string name, string value, bool encode)方法,当输出action时,将action属性的值强制转换为当前虚URL(HttpContext.Current.Request.RawUrl,上面的~/showVisasAll_(w+).aspx)

最后就是让所有的页面都调用这个基类,修改一下Web.config就好了

<>

<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>

/// 重写默认的HtmlTextWriter方法,修改form标记中的value属性,使其值为重写的URL而不是真实URL。

/// </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);

}

#endregion

}

FormFixers#region FormFixers

FormFixerHtml32TextWriter#region FormFixerHtml32TextWriter

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)

...{

// 如果当前输出的属性为form标记的action属性,则将其值替换为重写后的虚假URL

if (_url != null && string.Compare(name, "action", true) == 0)

...{

value = _url;

}

base.WriteAttribute(name, value, encode);

}

}

#endregion

FormFixerHtmlTextWriter#region FormFixerHtmlTextWriter

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);

}

}

#endregion

#endregion

}

【asp.net url重写后页面回传问题】相关文章:

asp.net显示页面执行时间

asp.net 2.0 中的URL重写以及urlMappings问题

asp.net Google样式分页控件

asp.net页面与页面之间传参数值方法

asp.net 参数不同共用一个页面的实现方法

aspx 服务器架设问题解决

asp.net 两个不同页面的传值

asp.net图片上传实例

asp.net中C++单例实现问题分析

asp.net 文章内容分页显示的代码

精品推荐
分类导航