【发布时间】:2016-04-15 16:30:14
【问题描述】:
我在 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>
为什么客户端验证没有发生?
【问题讨论】:
-
您是否在
BungleConfig.cs类中包含 jquery 验证库?如果是这样,您是否在布局文件中包含该脚本包?鉴于它正在生成的 HTML,它应该可以正常工作 -
就是这样。我很惊讶我没听懂。让它成为一个答案,我会这样标记它。谢谢!
-
乐于助人!旧的第二双眼睛把戏:)
标签: asp.net-mvc