2012-08-05 76 views
2

我正在构建一个MVC 3应用程序。MVC 3 - 在客户端设置非必需字段为

我可以在客户端设置一个非必填字段(使用JavaScript/jQuery)吗?

当页面中的东西发生变化时,我需要它动态地动态显示。

更新:我查看了我的页面的源代码,并看到了将验证规则推入其中的window.mvcClientValidationMetadata数组。我可以用它来满足我的需求吗?

谢谢

回答

0

你可以在客户端做任何你想做的事情。

您可以连接到表单提交事件,并在其中检查该字段是否已填充,并提交表单或根据需要显示错误消息。

当然,如果JavaScript被关闭,或者如果用户知道这个字段可能最终没有被填充,所以总是检查服务器端(除了Model.IsValid,你可以添加检查你没有的字段专门添加了RequiredAttribute)。

如果您的验证逻辑很复杂,另一种方法是覆盖ModelMetadata以提供自定义验证。

+0

为什么要这样做,如果我可以利用MVC的内置客户端验证API脚本? – 2012-08-05 14:18:09

+0

@YairNevet - 你只是说这个领域不是必需的。我明白这意味着你的模型不会有'RequiredAttribute'。当然,如果你想要的话,把这个属性添加到模型的属性上,你就可以走了。 – Oded 2012-08-05 14:19:17

+0

只有在某些情况下才需要该字段,而不是处于初始化状态。 – 2012-08-05 14:20:30

0

您可以设置验证规则是这样的:

$('element').rules('add',{ 
    required: true 
}); 

,并删除它:

$('element').rules('remove', 'required'); 

或者你可以添加需要的值有条件地自定义验证方法。看到这个:http://docs.jquery.com/Plugins/Validation/Validator/addMethod

+0

图书馆“规则”依赖于哪个?我得到“对象没有方法”的规则“。 – 2012-08-06 04:14:32

+0

jquery.validate.unobtrusive.js – karaxuna 2012-08-06 07:20:35

+0

我的MVC应用程序不使用它。 – 2012-08-06 08:30:04