MVC3项目中的jQuery验证

时间:2012-01-27 21:24:42

标签: jquery asp.net-mvc-3

当我创建一个新的MVC3应用程序时,添加一个模型,向模型添加[Required]属性,为此模型构建一个新的编辑视图,并添加@Html.ValidationMessageFor(...),一切都很好。如果我尝试在不填写值的情况下提交编辑表单,则会向我提供验证消息。

我的问题是,这不适用于我正在处理的企业应用。这就是我所做的,我想知道你是否可以考虑我可以检查的其他任何问题。我无法分享代码,但也许你可以从列表中看到一个明显的遗漏......

  • [Required]属性添加到我的模型的属性
  • 确保引用了jquery.validate.js和jquery.validate.unobtrusive.js
  • 在我的观点
  • 上添加了Html.EnableClientValidation(true)Html.EnableUnobtrusiveJavaScript(true)
  • 在我的控件旁边添加了@Html.ValidationMessageFor(...)@Html.TextBoxFor

问题是我可以提交表单而不会执行验证。我收到一个服务器端错误,指出该实体无效,如果超过客户端验证,我会期望这样做。

当我检查源时,它没有将验证属性呈现给我的文本框。我希望它看起来像这样......

<input class="text-box single-line" data-val="true" 
    data-val-required="The Property1 field is required." 
    id="Property1" name="Property1" type="text" value="" />

但它看起来更像是......

<input id="Reminder_Description" name="Reminder.Description" 
    style="width:300px;" type="text" value="" />

究竟是什么责任注入这些属性?

谢谢!

2 个答案:

答案 0 :(得分:1)

我想出了这个问题。我只是不知道属性没有通过服务层(WCF)传递,因此Required属性无效。为了解决这个问题,我们添加了一个对实体程序集的本地引用(这在我们的架构中是有意义的)。感谢。

答案 1 :(得分:0)

您是否检查过web.config:

<appSettings>
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />