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

我的向导具有多个客户端验证的,(正则表达式,所需场等),它们都工作正常。

我刚添加的CustomValidator到控制中的一个,即调用一些服务器端代码。 (unfortunaltely它必须是服务器端)。

我的问题是此代码似乎向导已经移动之后到下一步骤(或在移动的过程中)被调用。

因此,它返回验证错误的事实是没有多大用处的,我...

我动态添加验证作为我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弹出,从服务器端方法,它基本上说“我不是有效的”和本出现在屏幕上移动时刚过调用。

任何建议感激收到。

有帮助吗?

解决方案

我已成功地排序了这一点。

我添加了一个事件处理程序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;
        }
    }

我的服务器端验证目前正在由原始向导代码,然后将其忽略,并且一个第二时间通过该方法,然后停止该向导移动到下一步骤....

这不是世界上最好的解决,但至少它的工作!我会更新这个帖子如果我弄清楚什么是真正回事。

其他提示

请确保您要添加在每个回发的控制,在Init事件。

修改

您也可以手动接线了客户端验证定制验证器。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top