Asp.net mvc 这真的是非结构化的jquery验证吗?

Asp.net mvc 这真的是非结构化的jquery验证吗?,asp.net-mvc,asp.net-mvc-3,entity-framework,entity-framework-4,unobtrusive-javascript,Asp.net Mvc,Asp.net Mvc 3,Entity Framework,Entity Framework 4,Unobtrusive Javascript,根据这一定义: 低调的JavaScript避免将内联JavaScript注入HTML。这使您的HTML更小、更不杂乱,并且更容易交换或自定义JavaScript库 然而,在阅读本文时: 博主说: 现在,为了急切地执行验证,即每次当用户字段聚焦时执行验证,您需要在页面底部添加此脚本 我不知道我是否感到困惑,但对我来说,非结构化的javascript验证意味着简单地说,页面上没有javascript代码,只有对具有逻辑的.js文件的引用。通过这种方式,您可以将验证逻辑与表示分离 话虽如此,我希望在下

根据这一定义:

低调的JavaScript避免将内联JavaScript注入HTML。这使您的HTML更小、更不杂乱,并且更容易交换或自定义JavaScript库

然而,在阅读本文时: 博主说: 现在,为了急切地执行验证,即每次当用户字段聚焦时执行验证,您需要在页面底部添加此脚本

我不知道我是否感到困惑,但对我来说,非结构化的javascript验证意味着简单地说,页面上没有javascript代码,只有对具有逻辑的.js文件的引用。通过这种方式,您可以将验证逻辑与表示分离

话虽如此,我希望在下面的表格中启用非结构化验证。我看到的唯一区别是: 1.第一行:我没有

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<EagerlyPerformingValidation.Models.UserInformation>

根据您(正确)的理解进行的不引人注目的验证有点“懒惰”,因为它只在您提交表单时触发。您链接到的博客帖子引用的javascript代码只会在每次您的选项卡脱离控件时触发验证。您是对的,它并不是像所展示的那样真正不引人注目的javascript

我认为让它变得不引人注目的方法是,要么给每个控件添加
数据-
属性(这很痛苦),然后编写代码来注入脚本,要么将他的一点脚本添加到您正在引用的一个主要javascript文件中,这可能是他的意图


本书第8章对此有一点很酷:

根据您(正确)的理解进行的不引人注目的验证有点“懒惰”,因为它只在您提交表单时触发。您链接到的博客帖子引用的javascript代码只会在每次您的选项卡脱离控件时触发验证。您是对的,它并不是像所展示的那样真正不引人注目的javascript

我认为让它变得不引人注目的方法是,要么给每个控件添加
数据-
属性(这很痛苦),然后编写代码来注入脚本,要么将他的一点脚本添加到您正在引用的一个主要javascript文件中,这可能是他的意图


这本书的第8章对此有一点很酷:

我创建了一个外部js文件,并添加了blogger显示的代码,并且成功了,我看不出表单开头这一行的意图。当您使用Razor时,视图中的这一位被您的
@model
声明所取代,因此您的声明没有它是正确的。我创建了一个外部js文件,并添加了blogger显示的代码,它起了作用,我看不到表单开头这一行的意图。当您使用Razor时,该位将被视图中的
@model
声明所取代,因此您的视图中没有它是正确的。
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>