MVC4:jQueryvalidationUnobtrusive Native工作不正确

我的MVC4 Web应用程序是在Umbraco 7上构建的。我已经安装了以下nuget包:

jQuery 1.10.2 jQuery.Validation 1.11.1 jQuery.Validation.Unobtrusive.Native.MVC4 1.1.0.0 

不引人注目的validation来自这个网站: http : //jqueryvalidationunobtrusivenative.azurewebsites.net/Home/GettingStarted

我的观点如下:

 
@Html.TextBoxFor(m => m.FullName, true) @Html.ValidationMessageFor(m => m.FullName, "*")
@Html.TextBoxFor(m => m.Company, true) @Html.ValidationMessageFor(m => m.Company, "*")
@Html.TextBoxFor(m => m.EmailAddress, true) @Html.ValidationMessageFor(m => m.EmailAddress, "*")
@Html.TextAreaFor(m => m.Message, true, 10, 30, new { @class = "input-xl" })
@Html.ValidationSummary(false, "Please correct the following errors before submitting the message")

在web.config中:

    

我的模特:

 public class ContactFormViewModel { [Required, Display(Name = "Full Name")] public string FullName { get; set; } public string Company { get; set; } [Required, Display(Name = "Email Address")] [RegularExpression(@"^(?!\.)(""([^""\r\\]|\\[""\r\\])*""|([-a-z0-9!#$%&'*+/=?^_`{|}~]|(?<!\.)\.)*)(?<!\.)@[a-z0-9][\w\.-]*[a-z0-9]\.[az][az\.]*[az]$", ErrorMessage="Not a valid email address")] public string EmailAddress { get; set; } [Required] [DataType(DataType.MultilineText)] public string Message { get; set; } } 

这是脚本(我已经确认在浏览器中正确加载)

   

呈现的HTML看起来像这样(在初始页面加载时):

 
*
*
*
Please correct the following errors before submitting the message
  • The Full Name field is required.
  • The Email Address field is required.
  • The Message field is required.

如您所见,validation文本在加载时已经处于无效状态(在任何按键或表单提交之前)。 此外,当我提交空表单时,它会提交回服务器,因此客户端validation实际上不会发生。 jQueryvalidation脚本运行,因为公司字段不是必需的,并且在validation消息的类属性中反映出来( 'field-validation-valid'

编辑 :请求的控制器代码:

  public class ContactFormSurfaceController: Umbraco.Web.Mvc.SurfaceController { [HttpGet] public ActionResult ContactForm(ContactFormViewModel model) { return PartialView("ContactForm", new ContactFormViewModel()); } } 

有人可以帮帮我吗? 提前致谢。

使用这种新的Native Unobtrusivevalidation,您似乎必须手动调用表单上的.validate()

从日期演示示例 :

 $("form").validate({ submitHandler: function (form) { alert("This is a valid form!") } }); 

或者在更简单的例子中:

 $("form").validate(); 

我没有这方面的经验,但由于这只使用jQuery Validation Plugin,因此文档可能值得阅读。

这适用于您生成的HTML:

请参阅这些小提琴以供参考:

http://jsfiddle.net/4JE62/

http://jsfiddle.net/4JE62/1/

不要使用validate(),而是使用valid()

 $("#frmId").valid() 

请记住在您的页面中包含validate.unobtrusive.js