服务器端的CustomValidator在.net中向导发生为时已晚
-
22-07-2019 - |
题
我有一个数据收集向导的问题。
我的向导具有多个客户端验证的,(正则表达式,所需场等),它们都工作正常。
我刚添加的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;
}
}
我的服务器端验证目前正在由原始向导代码,然后将其忽略,并且一个第二时间通过该方法,然后停止该向导移动到下一步骤.... 调用两次,一次p>
这不是世界上最好的解决,但至少它的工作!我会更新这个帖子如果我弄清楚什么是真正回事。
其他提示
请确保您要添加在每个回发的控制,在Init事件。
修改强>
您也可以手动接线了客户端验证定制验证器。
不隶属于 StackOverflow