MVC验证模型属性:未发生客户端验证,仅服务器端

时间:2016-04-15 16:30:14

标签: asp.net-mvc

我在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 &#39;3333a&#39; 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>

为什么客户端验证没有发生?

1 个答案:

答案 0 :(得分:4)

您是否在BungleConfig.cs类中包含了jquery验证库?如果是这样,您是否在布局文件中包含该脚本包?它应该工作,因为它正在生成的HTML