根据这个定义here:
不引人注目的JavaScript避免将内联JavaScript注入HTML。这使您的HTML更小,更简洁,并且更容易更换或自定义JavaScript库。
但是,在阅读此blog时: 这位博客说: 现在要急切地执行验证,即每次用户字段焦点时执行验证,您需要在页面底部添加此脚本。
我不知道我是否感到困惑,但对于我来说,Unobstrusive javascript验证意味着简单的话,页面上没有JAVASCRIPT代码,只有对具有逻辑的.js文件的引用。通过这种方式,您可以将验证逻辑与演示文稿分开。
有了这个说法,我想以下面的形式启用不显眼的验证。我看到的唯一区别是: 第1行:我没有。
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<EagerlyPerformingValidation.Models.UserInformation>
我在这里错过了什么吗?
public class Position{
[DatabaseGenerated(System.ComponentModel.DataAnnotations.DatabaseGeneratedOption.Identity)]
public int PositionID { get; set; }
[Required(ErrorMessage = "Position name is required.")]
[StringLength(20, MinimumLength = 3, ErrorMessage = "Name should not be longer than 20 characters.")]
[Display(Name = "Position name")]
public string name { get; set; }
[Required(ErrorMessage = "Number of years is required")]
[Display(Name = "Number of years")]
[YearsValidationAttribute(5, ErrorMessage = "{0} value must be greater than {1} years.")]
public int yearsExperienceRequired { get; set; }
public virtual ICollection<ApplicantPosition> applicantPosition { get; set; }
}
@model Data.Model.Position
@{
ViewBag.Title = "Create";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Position</legend>
<div class="editor-label">
@Html.LabelFor(model => model.name)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.name)
@Html.ValidationMessageFor(model => model.name)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.yearsExperienceRequired)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.yearsExperienceRequired)
@Html.ValidationMessageFor(model => model.yearsExperienceRequired)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
答案 0 :(得分:1)
根据您的(正确)理解进行的不显眼的验证有点“懒惰”,因为它只在您提交表单时触发。您链接到的博客帖子引用的javascript代码只会导致每次跳出控件时都会触发验证。你是对的,它并不是真正不引人注目的javascript。
我认为你可以让它不引人注目的方法是向每个控件添加data-
属性(痛苦)并编写代码来注入脚本,或者将其一点点脚本添加到其中一个你引用的主要javascript文件,这可能是他的意图。
在本书的第8章中有一点很清楚:Wrox Professional ASP.NET MVC 3