2016-04-15 48 views
2

我有jQuery.Validation 1.15.0安裝在一個ASP.NET MVC 5.2項目,我想了解MVC的基礎知識,並在此刻,驗證模型數據。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網站證實,驗證應在客戶端上可以先進行,如果JavaScript中的瀏覽器,Chrome V49被啓用,它是。實際上,「生效日期」字段上有一個可用的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> 

我使用的引導,也是如此,並試圖過濾掉非數字按鍵的廠商ID字段,但這並沒有影響。我也嘗試過設置最大和最小長度。

我也期待EffectiveDate模型屬性上的DisplayFormat屬性有一些客戶端副作用。它沒。下面是從做「查看源代碼」

<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> 

爲什麼客戶端確認沒有發生生成的HTML?

+0

你是否在你的'BungleConfig.cs'類中包含jquery驗證庫?如果是這樣,你是否在你的佈局文件中包含該腳本包?它應該工作給出它產生的HTML – mituw16

+0

就是這樣。我很驚訝,我沒有聽到。讓它成爲答案,我會將其標記爲如此。謝謝! – ChadD

+0

樂意幫忙!舊的第二雙眼睛把戲:) – mituw16

回答

4

你在BungleConfig.cs類中包含jquery驗證庫嗎?如果是這樣,你是否在你的佈局文件中包含該腳本包?它應該工作,因爲它生產的HTML

+0

如果我做得對,我想我需要這兩個腳本文件。消除一個或otehr導致錯誤。包括兩個,工作。包括( 「〜/ Scripts/jquery.validate.min.js」, 「〜/ Scripts/jquery.validate.unobtrusive.min.js 「)); – ChadD