【问题标题】:ASP.NET validator one behind with code generated formASP.NET 验证器后面带有代码生成表单
【发布时间】:2016-03-23 16:45:20
【问题描述】:

我使用 Telerik AJAX 控件创建了服务器创建的表单,并带有一个提交按钮(无点击事件)。我的表单使用的验证器可以正常工作,除非它们在字段验证错误后发生在下一篇文章中。

如果我将电子邮件字段设为空,代码逻辑会捕获并返回错误。再次提交,电子邮件必填字段验证器将在代码之前捕获错误。现在输入有效数据并提交,最后一个空字段验证器错误再次出现。再次提交好的数据,它就会更新。

另外,如果我产生自己的验证器错误,那么验证器可以正常工作。我有所需复选框的验证器代码。如果发生遗漏支票,我会致电

ValidatorError.Display(Page, message);

导致后续

Page.Validate(FormEntryBase.VALIDATION_GROUP);

正确验证当前提交中的必填字段。

        protected void Page_Load(object sender, EventArgs e) {


            localValidationError = theForm.CustomValidateForm(Request.Form);
            if (localValidationError) {
                validateErrorList = form.validateErrorList;

                // get local valiation error put into validation summary error list
                if (validateErrorList != null) {
                    foreach (string message in validateErrorList) {
                        ValidatorError.Display(Page, message);
                    }
                }
            }
            Page.Validate(FormEntryBase.VALIDATION_GROUP);

            if (!Page.IsValid ) {
                return;
            }

代码未捕获的验证器错误在初始提交时未捕获,这会导致错误数据进入。

我有另一个使用 click 方法的 Web 表单,并且只使用 Page.IsValid 工作正常。

非常奇怪的行为,可能是某种生命周期问题。

【问题讨论】:

  • 这是一个帖子,而不是 Ajax 调用。

标签: c# asp.net validation telerik


【解决方案1】:

幸运的是,我通过在代码中添加点击事件找到了解决方案。要添加点击事件,首先我将 RadButton 添加到我的表单创建代码中,可在 aspx.cs 中访问。

RadButton button = new RadButton();
button.ValidateRequestMode = ValidateRequestMode.Enabled;
button.ValidationGroup = VALIDATION_GROUP;
button.UseSubmitBehavior = true;
theForm.updateButton = button;

在 aspx.cs Page_Load 中我为按钮添加了点击方法。

protected void Page_Load(object sender, EventArgs e) {
  ...
  theForm = group.GetJoinForm();
  theForm.updateButton.Click  += new EventHandler(UpdateButton_Click);
  ...

void UpdateButton_Click(object sender, EventArgs e) {
  Page.Validate(FormEntryBase.VALIDATION_GROUP);
  if (!Page.IsValid) {
    return;
  }
  ... most of page load code moved here

这三个步骤解决了我的验证延迟问题,现在我的所有表单都可以很好地验证。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-02
    • 1970-01-01
    • 1970-01-01
    • 2013-02-09
    • 2015-10-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多