我在ASP.NET MVC 5.2项目中安装了jQuery.Validation 1.15.0,我正在尝试学习MVC的基础知识,并且目前正在验证模型数据。
我的印象是我添加的验证属性会生成客户端验证,并且在所有客户端验证通过之前不会发回。但是,虽然验证通常有效,但每次都会发生回发,即使例如没有提供VendorId的值。
public class StateAssessmentViewModel
{
[Required(ErrorMessage = "Vendor ID is required")]
[MaxLength(4, ErrorMessage="{0} can not be longer than {1} characters." )]
[Display(Name = "Vendor ID")]
public int VendorId { get; set; }
[Display(Name = "Effective Date")]
[DisplayFormat(DataFormatString = "{0:MM-dd-yyyy}", ApplyFormatInEditMode = true)]
public DateTime EffectiveDate { get; set; }
}
This网站确认,如果在浏览器,Chrome v49中启用了Javascript,则应首先在客户端上执行验证。实际上,“生效日期”字段上有一个可用的jQuery日历,所以Javascript肯定是启用的。
我能找到什么来帮助我确定为什么客户端根本没有进行验证?
以下是我查看源代码时生成的html:
<div class="form-group">
<label class="control-label col-md-2" for="VendorId">Vendor ID</label>
<div class="col-md-10">
<input class="input-validation-error form-control text-box single-line" data-val="true" data-val-maxlength="Vendor ID can not be longer than 4 characters." data-val-maxlength-max="4" data-val-number="The field Vendor ID must be a number." data-val-required="Vendor ID is required" id="VendorId" max="4" min="0" name="VendorId" type="number" value="3333a" />
<span class="field-validation-error text-danger" data-valmsg-for="VendorId" data-valmsg-replace="true">The value '3333a' is not valid for Vendor ID.</span>
</div>
</div>
我也在使用Bootstrap,并尝试过滤VendorId字段的非数字键击,但这没有任何效果。我也尝试过设置最大和最小长度。
我还希望EffectiveDate模型属性上的DisplayFormat属性具有一些客户端副作用。它没。这是从“查看源代码”
生成的HTML<div class="form-group">
<label class="control-label col-md-2" for="EffectiveDate">Effective Date</label>
<div class="col-md-10">
<input class="input-validation-error form-control text-box single-line" data-val="true" data-val-date="The field Effective Date must be a date." data-val-required="The Effective Date field is required." id="txtEffectiveDate" name="EffectiveDate" type="datetime" value="" />
<span class="field-validation-error text-danger" data-valmsg-for="EffectiveDate" data-valmsg-replace="true">The Effective Date field is required.</span>
</div>
</div>
为什么客户端验证没有发生?
答案 0 :(得分:4)
您是否在BungleConfig.cs类中包含了jquery验证库?如果是这样,您是否在布局文件中包含该脚本包?它应该工作,因为它正在生成的HTML