在我的母版页中,在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/

10-10 13:45