您现在的位置:龙卷风首页 ›› 网络编程 ›› 阅读文章

asp.net中url重写后提交表单出错问题(urlrewriter.net系列之一)

url地址重写后,提交表单指向不正确的地址。

url重写后出现了一系列问题。今天发现所有表单提交之后都提示“无法找到资源”,查看原页面form中的action,发现指向了一个不存在的url。解决方法:把action这个属性除去。

具体做法:

1,首先,在某一个程序集中添加下面类,假设程序集的命名空间是ActionlessForm

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

2、在.aspx页面添加引用,像引用web用户控件一样:

<%@ Register TagPrefix="skm" Namespace="ActionlessForm"
Assembly="ActionlessForm" %>

3、把页面中的<form runat="server"> 标记改成<skm:Form id="Form1" method="post" runat="server">

把</Form>改成</skm:Form>

这样就可以了。没有了action属性,表单会提交到当前页,正是我们需要的效果。

参考网址:http://msdn.microsoft.com/en-us/library/ms972974.aspx

作者 不见不散 本文仅代表作者观点,与龙卷风资讯网立场无关。

我来说两句

内容/Content