Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Kentico中的自定义表单控件自定义客户端验证_Javascript_C#_Kentico - Fatal编程技术网

Javascript Kentico中的自定义表单控件自定义客户端验证

Javascript Kentico中的自定义表单控件自定义客户端验证,javascript,c#,kentico,Javascript,C#,Kentico,我们已经创建了一个自定义FormEngineUserControl,以使用3个日期/月份/年份文本输入来捕获日期输入 在服务器上,我们重写bool IsValid方法,该方法工作正常,如果无效,则显示错误消息 然而,我们也希望使用客户端验证,我们可以使用CustomValidator控件并分配ClientValidationFunction来调用JS方法,但是这不会与服务器验证函数结合,我们最终会得到两条验证消息,一条在客户端验证通过时删除,只有在表单重新提交时才会消失,基本上使客户端验证变得无

我们已经创建了一个自定义FormEngineUserControl,以使用3个日期/月份/年份文本输入来捕获日期输入

在服务器上,我们重写bool IsValid方法,该方法工作正常,如果无效,则显示错误消息

然而,我们也希望使用客户端验证,我们可以使用CustomValidator控件并分配ClientValidationFunction来调用JS方法,但是这不会与服务器验证函数结合,我们最终会得到两条验证消息,一条在客户端验证通过时删除,只有在表单重新提交时才会消失,基本上使客户端验证变得无用


是否无法向自定义表单控件注册客户端验证方法?然后,它将与服务器方法和错误标签等结合使用。

这应该与任何其他.net用户控件一样工作。如果验证器返回false,您如何阻止进一步处理?您可能需要将StoppProcessing属性设置为true

有几个类似的主题可以解决您的问题:


我不认为这是可行的,因为我不确定如何将客户端验证与服务器端验证结合起来。您永远不能禁用服务器端验证。客户端验证只是为了更好的用户体验,它没有任何安全措施。通常使用的想法是,在客户端验证所有字段之前,禁用表单提交。如果验证在服务器上是相同的,您不应该看到相同的错误消息,因为否则它首先不会通过客户端


在Kentico中实现这一点的方法是使用一些自定义js或更好的框架/库来帮助您进行验证,例如,给Kentico表单一些id/类,将表单验证与js连接起来,让每一方的客户端/服务器都完成其工作。

我认为它的工作方式与用户控件不同,Kentico正在添加自己的服务器验证,CustomValidator上的客户端验证方法似乎甚至没有启动。我们有手动代码来触发标签,但这一切都变得有点混乱