在我的母版页中,在SP1之前的版本中,我有<form ... action="" ...>
,如果查看源代码,则action属性将是一个空字符串。在SP1中,操作属性被覆盖“ MyPage.aspx?MyParams”,不幸的是,这导致我的回发失败,因为URL中有其他pathinfo(即MyPage.aspx \ CustomerData?MyParams)。我已经在OnLoad事件中检查了action属性,但此时它仍为空白,因此SP1覆盖了::。
抱歉,我只是意识到我的帖子的一部分丢失了,因为我没有正确使用markdown。
最佳答案
MrJavaGuy的很好的解决方案,但是代码中有错别字,因为此处粘贴代码并不总是能正常工作。 WriteAttribute方法上有一个重复项,更正后的代码如下-
public class HtmlFormAdapter : ControlAdapter
{
protected override void Render(HtmlTextWriter writer)
{
HtmlForm form = this.Control as HtmlForm;
if (form == null)
{
throw new InvalidOperationException("Can only use HtmlFormAdapter as an adapter for an HtmlForm control");
}
base.Render(new CustomActionTextWriter(writer));
}
public class CustomActionTextWriter : HtmlTextWriter
{
public CustomActionTextWriter(HtmlTextWriter writer) : base(writer)
{
this.InnerWriter = writer.InnerWriter;
}
public override void WriteAttribute(string name, string value, bool fEncode)
{
if (name == "action")
{
value = "";
}
base.WriteAttribute(name, value, fEncode);
}
}
}
关于c# - 如何防止ASP.NET 3.5 SP1覆盖我的操作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/292756/