Webforms上的客户端表单验证器即使出错也会导致回发

时间:2016-06-20 15:15:52

标签: c# asp.net validation webforms

我在我的应用中使用标准的ASP.NET WebForms验证控件。我刚刚注意到,在某些时候,客户端验证似乎已经停止了工作。网页在短时间内正确显示红色的错误,但仍会导致不必要的回发,从而导致更改丢失。

这是一个.net 4.5项目。

我有以下appSetting:

<add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />

此外,在提交按钮上将causeValidation设置为true,并且ValidationGroup已在按钮和验证器等上设置为正确的值。

1 个答案:

答案 0 :(得分:0)

要回答我自己的问题,那是因为我覆盖了标签的渲染方法(因为我使用了URL重写)并且作为副作用,它没有渲染onclick通常呈现为服务器端的属性。

相反,我改变了我的习惯&#34; ActionlessForm&#34;控制使用以下代码:

public class Form : System.Web.UI.HtmlControls.HtmlForm
{
    /// <summary>
    /// The RenderAttributes method adds the attributes to the rendered &lt;form&gt; tag.
    /// We override this method so that the action attribute is not emitted.
    /// </summary>
    protected override void RenderAttributes(HtmlTextWriter writer)
    {
        // You cannot simply remove the form action as it seems to get rendered anyway
        // but if you set it to the RawURL it will be the correct value on URL rewritten pages.
        base.Attributes["action"] = HttpContext.Current.Request.RawUrl;
        base.RenderAttributes(writer);
    }
}