UrlReWriter 实现方法 续_解决FROM action 跳转问题
来源:互联网 发布:软件反跟踪技术 编辑:程序博客网 时间:2024/06/03 20:12
FormRewriterControlAdapter.cs
然后在 App_Browsers 文件夹添加 BrowserFile.browser 浏览器文件
在里面添加以下一段代码
这里利用新的ASP.NET 2.0控件适配器扩展架构来定制控件的输出,用你提供的值来覆盖action属性的值
不需要自己重写页面代码
II原来的解决方法
public class FormRewriterControlAdapter:System.Web.UI.Adapters.ControlAdapter
{
public FormRewriterControlAdapter()
{
//
//TODO: 在此处添加构造函数逻辑
//
}
protected override void Render(HtmlTextWriter writer)
{
base.Render(new RewriteFormHtmlTextWriter(writer));
}
}
public class RewriteFormHtmlTextWriter:HtmlTextWriter
{
/// <summary>
/// 调用基类的构造方法
/// </summary>
/// <param name="writer"></param>
public RewriteFormHtmlTextWriter(HtmlTextWriter writer):base(writer)
{
this.InnerWriter = writer.InnerWriter;
}
public RewriteFormHtmlTextWriter(System.IO.TextWriter writer):base(writer)
{
base.InnerWriter = writer;
}
public override void WriteAttribute(string name, string value, bool fEncode)
{
if (name == "action")
{
HttpContext context = HttpContext.Current;
if (context.Items["ActionAlreadyWritten"] == null)
{
value = context.Request.RawUrl;
context.Items["ActionAlreadyWritten"] = true;
}
}
base.WriteAttribute(name, value, fEncode);
}
}
{
public FormRewriterControlAdapter()
{
//
//TODO: 在此处添加构造函数逻辑
//
}
protected override void Render(HtmlTextWriter writer)
{
base.Render(new RewriteFormHtmlTextWriter(writer));
}
}
public class RewriteFormHtmlTextWriter:HtmlTextWriter
{
/// <summary>
/// 调用基类的构造方法
/// </summary>
/// <param name="writer"></param>
public RewriteFormHtmlTextWriter(HtmlTextWriter writer):base(writer)
{
this.InnerWriter = writer.InnerWriter;
}
public RewriteFormHtmlTextWriter(System.IO.TextWriter writer):base(writer)
{
base.InnerWriter = writer;
}
public override void WriteAttribute(string name, string value, bool fEncode)
{
if (name == "action")
{
HttpContext context = HttpContext.Current;
if (context.Items["ActionAlreadyWritten"] == null)
{
value = context.Request.RawUrl;
context.Items["ActionAlreadyWritten"] = true;
}
}
base.WriteAttribute(name, value, fEncode);
}
}
然后在 App_Browsers 文件夹添加 BrowserFile.browser 浏览器文件
在里面添加以下一段代码
<browser refID="Default">
<controlAdapters>
<adapter controlType="System.Web.UI.HtmlControls.HtmlForm"
adapterType="FormRewriterControlAdapter" />
</controlAdapters>
</browser>
<controlAdapters>
<adapter controlType="System.Web.UI.HtmlControls.HtmlForm"
adapterType="FormRewriterControlAdapter" />
</controlAdapters>
</browser>
这里利用新的ASP.NET 2.0控件适配器扩展架构来定制控件的输出,用你提供的值来覆盖action属性的值
不需要自己重写页面代码
II原来的解决方法
namespace ActionlessForm {
public class Form : System.Web.UI.HtmlControls.HtmlForm
{
protected override void RenderAttributes(HtmlTextWriter writer)
{
writer.WriteAttribute("name", this.Name);
base.Attributes.Remove("name");
writer.WriteAttribute("method", this.Method);
base.Attributes.Remove("method");
this.Attributes.Render(writer);
base.Attributes.Remove("action");
if (base.ID != null)
writer.WriteAttribute("id", base.ClientID);
}
}
}
页面中的 Form 继承该Form 就可以实现相同的目的了public class Form : System.Web.UI.HtmlControls.HtmlForm
{
protected override void RenderAttributes(HtmlTextWriter writer)
{
writer.WriteAttribute("name", this.Name);
base.Attributes.Remove("name");
writer.WriteAttribute("method", this.Method);
base.Attributes.Remove("method");
this.Attributes.Render(writer);
base.Attributes.Remove("action");
if (base.ID != null)
writer.WriteAttribute("id", base.ClientID);
}
}
}
- UrlReWriter 实现方法 续_解决FROM action 跳转问题
- UrlReWriter 实现方法
- UrlReWriter 实现方法
- UrlReWriter 实现方法
- webwork_解决action跳转到action丢失参数的问题
- 3种方法解决Struts2中forward问题!通过jsp:forward跳转到WEB-INF 下的action中
- strust2 action跳转问题
- 动态Action跳转实现
- struts2实现只跳转,不用action类的方法
- webwork中解决action跳转到action丢失参数的问题
- webwork中解决action跳转到action丢失参数的问题
- 解决_OBJC_CLASS_$_某文件名", referenced from:问题
- 解决_OBJC_CLASS_$_某文件名", referenced from:问题
- Struts2 action 跳转到 action 传值 方法
- struts2 action跳转action 的配置方法
- Stuts Action中的跳转方法!
- struts的action跳转问题
- 解决struts1中请求跳转到Action而非execute的问题
- ADO.NET读书笔记系列之------DataSet对象
- Request.ServerVariables集合
- htpasswd - 管理用于基本认证的用户文件
- servlet 的session 管理
- VS2008 ERROR
- UrlReWriter 实现方法 续_解决FROM action 跳转问题
- VMWear 6设置已有虚拟机的内存
- request.getParameterValues与request.getParameter的区别
- 菜鸟必看,高手免进:如何重装电脑系统
- T-SQL查询语句(二):嵌套查询
- STL中的适配器
- 解决windows下文件在unix系统下出现^M的问题 及 Vi高级命令
- 重装系统后必须做的10件大事
- Conditional Love: FOREACH Redux