Kentico

时间:2018-02-14 14:48:10

标签: javascript c# kentico

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

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

但是我们也希望使用客户端验证,我们可以使用CustomValidator控件并分配ClientValidationFunction来调用JS方法,但是这不会与服务器验证功能结合,我们结束最多有两个验证消息,一个在客户端验证通过时删除,另一个在表单重新提交时消失,基本上使客户端验证无效。

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

2 个答案:

答案 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验证并让每一方(客户/服务器)完成它的工作。