jquery不引人注目

Jef*_*ddy 4 jquery unobtrusive-javascript

我试图将unobtrusive.js包含在我的mvc3视图中,但是当我这样做时,我会在视图呈现时出现一堆错误.例外情况是在不引人注目的脚本中,它在任何地方检查任何与"未定义"相关的内容,就像这一行一样

if(message !== undefined) //Compare against undefined, because an empty message is legal
Run Code Online (Sandbox Code Playgroud)

我得到的错误是

Microsoft JScript运行时错误:'undefined'为null或不是对象

这是我的视图的脚本声明.

<script src="../../Scripts/jquery-1.5.1.min.js" type="text/javascript"></script>
<script src="../../Scripts/jquery-ui-1.8.14.custom.min.js" type="text/javascript"></script>
<script src="../../Scripts/jquery-ui-1.8.11.min.js" type="text/javascript"></script>
<script src="../../Scripts/jquery.validate.unobtrusive.js" type="text/javascript"></script>
<link href="@Url.Content("~/Content/themes/base/jquery.ui.autocomplete.css")" rel="stylesheet" type="text/css" /> 
Run Code Online (Sandbox Code Playgroud)

Bra*_*don 9

你需要使用jquery.validate.min.js而不是jquery.validate.unobtrusive.js


Ste*_*ick 7

如果你想:

  • 使用.NET模型验证(数据注释属性)
  • 使用html5数据属性而不是非语义css类

你需要两个:jquery.validate和jquery.validate.unobtrusive

脚本参考:

注意:在此示例中,js文件位于项目/站点的"public"文件夹下,但如果可能,您使用Microsoft的Google CDN地址.

<script src="@Url.Content("~/public/js/libs/jquery.validate.min.js")"></script>
<script src="@Url.Content("~/public/js/libs/jquery.validate.unobtrusive.min.js")"></script>
Run Code Online (Sandbox Code Playgroud)

模型:

public class PimpModel
{
  [Required]
  [StringLength(20)]
  [DisplayName("Pimp Name")]
  public string PimpName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

Web.config设置

 <appSettings>
    <add key="ClientValidationEnabled" value="true"/>
    <add key="UnobtrusiveJavaScriptEnabled" value="true"/>
  </appSettings>
Run Code Online (Sandbox Code Playgroud)

查看表单代码

@model SomeProject.Models.PimpModel
@{
  View.Title = "Index";
  Layout = "~/Views/Shared/_Layout.cshtml";
  Html.EnableUnobtrusiveJavaScript(true);
}
<h2>Pimp</h2>
@using (Html.BeginForm()) {
  @Html.ValidationSummary(true)
  <fieldset>
  @Html.ValidationMessageFor(model => model.PimpName)
  <div class="editor-label">
    @Html.LabelFor(model => model.PimpName)
  </div>
  <div class="editor-field">
    @Html.TextBoxFor(model => model.PimpName)
  </div>
  <input type="submit" value="Save"></fieldset>
}
Run Code Online (Sandbox Code Playgroud)

html帮助器生成html形式的数据属性,这些属性由不显眼的库使用,不显眼的库使用验证库中的函数,这是所有快乐的日子......