所以我按照Pro ASP.Net MVC 5 book from Apress上的教程学习ASP.Net MVC5。
问题在于,他在第11章提到如何通过将以下脚本添加到需要验证的视图(以及使用Nuget的项目)来在客户端验证表单:
<script src="∼/Scripts/jquery-1.9.1.js"/>
<script src="∼/Scripts/jquery.validate.js"/>
<script src="∼/Scripts/jquery.validate.unobtrusive.js"/>
执行此操作后,使用模型属性的集合,我发现当输入字段失去焦点时,并非所有属性都被验证,即使HTML对所有属性都是正确的(根据我的理解)。
所以我拥有的是模型:
[Required(ErrorMessage = "Please enter a product name")]
public string Name { get; set; }
[Required(ErrorMessage = "Please enter a product description")]
public string Description { get; set; }
脚本已按照本书的说明添加到布局文件中,生成的HTML如下:
<div class="form-group">
<label>Name</label>
<input name="Name" class="form-control input-validation-error" id="Name" type="text"
value="Kayak" data-val-required="Please enter a product name" data-val="true">
<span class="field-validation-error" data-valmsg-replace="true" data-valmsg-for="Name">
<span for="Name" generated="true">Please enter a product name</span>
</span>
</div>
<div class="form-group">
<label>Description</label>
<textarea name="Description" class="form-control" id="Description" rows="5" cols="20"
data-val-required="Please enter a product description" data-val="true"></textarea>
<span class="field-validation-valid" data-valmsg-replace="true"
data-valmsg-for="Description"></span>
</div>
所以根据这本书,两个字段都应该在控件失去焦点时显示错误,但是现在只有“名字”正在这样做(你可以看到,在图片中,4个字段中有2个是验证,如上所述的另外两种情况相同:
所以问题是,我在这里错过了什么?
更新 为了防止它有用,在浏览器控制台上,我在加载页面时收到此警告:
HTTP404:未找到 - 服务器找不到与之匹配的内容 请求的URI(统一资源标识符)。 (XHR):GET - http://localhost:61338/Content/bootstrap-theme.css
我正在使用Microsoft Edge来执行该网站。
更新2
我更新了使用jquery-1.10.2.js
版本。相同的结果。