我们创建了一个自定义FormEngineUserControl
来捕获日期输入,使用3个日期/月/年的文本输入。
在服务器上,我们覆盖bool IsValid()
方法,该方法正常工作,如果无效,则显示错误消息。
但是我们也希望使用客户端验证,我们可以使用CustomValidator
控件并分配ClientValidationFunction
来调用JS方法,但是这不会与服务器验证功能结合,我们结束最多有两个验证消息,一个在客户端验证通过时删除,另一个在表单重新提交时消失,基本上使客户端验证无效。
是否无法使用自定义表单控件注册客户端验证方法?然后将与服务器方法和错误标签等结合使用?
答案 0 :(得分:1)
这应该与任何其他.net用户控件非常相似。如果验证器返回false,您如何阻止进一步处理?您可能需要将StopProcessing属性设置为true。
有一些类似的主题可能会解决你的问题:
stop execution in Custom validator if it false Custom validator fires but does not prevent postback
答案 1 :(得分:0)
我认为这不可行,因为我不确定如何将客户端与服务器端验证结合起来。您无法禁用服务器端验证。客户端验证只是用于更好的用户体验,它无论如何都不受保护。使用的一般想法是禁用表单提交,直到在客户端验证所有字段。如果服务器上的验证相同,则不应该看到相同的错误消息,否则它将不会首先通过客户端。
你在Kentico中这样做的方法是使用一些自定义的js(或者更好的是一些框架/库来帮助你进行validate.js等验证),给Kentico形成一些id / class并连接表单用你的js验证并让每一方(客户/服务器)完成它的工作。