1

我的数据收集向导有问题。

我的向导有许多客户端验证器(正则表达式、必填字段等),它们都可以正常工作。

我刚刚向其中一个控件添加了一个 CustomValidator,它正在调用一些服务器端代码。(不幸的是它必须是服务器端)。

我的问题是,在向导进入下一步(或正在移动)之后,似乎调用了此代码。

因此,它为验证返回 false 的事实对我来说几乎没有用......

我正在动态添加验证器作为我的 InitControl 方法的一部分,如下所示:

mustUploadAnImageValidator = new CustomValidator();
mustUploadAnImageValidator.ControlToValidate = radioButtonList.ID;
mustUploadAnImageValidator.ValidationGroup = "wizardGroup";
mustUploadAnImageValidator.ErrorMessage = "You must select a valid gallery image to use";
mustUploadAnImageValidator.Display = ValidatorDisplay.Static;
mustUploadAnImageValidator.ServerValidate += 
    new ServerValidateEventHandler(mustUploadAnImageValidator_ServerValidate);
mustUploadAnImageValidator.CssClass = "galleryValidationMessageTop";

这适用于所有其他验证器,但我无法弄清楚为什么在我的服务器验证返回之前向导会继续前进。

我添加了一个从服务器端方法调用的 javaScript 弹出窗口,它基本上说“我无效”,并且在屏幕移动后出现。

任何建议都非常感激。

4

2 回答 2

2

我已经设法解决了这个问题。

我为 NextButtonClick 和 PreviousButtonClick 添加了一个事件处理程序,它只是再次调用页面验证。

protected virtual void DataCollectionWizard_PreviousButtonClick(object sender, WizardNavigationEventArgs e)
    {
        //manually validate the page, as the automatic validation seems to ignore CustomValidators
        Page.Validate("wizardGroup");

        if (!Page.IsValid)
        {
            e.Cancel = true;
        }
    }

我的服务器端验证器现在被调用了两次,一次由原始向导代码调用,然后被忽略,第二次由该方法调用,然后停止向导继续下一步....

这不是世界上最好的解决方法,但至少它有效!如果我弄清楚实际发生了什么,我会更新这篇文章。

于 2009-08-06T15:01:34.550 回答
0

确保在 Init 事件中为每个回发添加控件。

编辑

您还必须手动连接自定义验证器的客户端验证。

于 2009-08-04T13:39:04.360 回答