2013-05-29 48 views
17

試圖學習ASP.net MVC的基礎知識,並不能理解爲什麼我的客戶端驗證不起作用。MVC 4客戶端驗證不起作用

我有這兩個我的web.config文件(1是全球性的1是在views文件夾)

<add key="ClientValidationEnabled" value="true" /> 
<add key="UnobtrusiveJavaScriptEnabled" value="true" /> 

我在_layout.cshtmlfile有這個

@Scripts.Render("~/bundles/jquery") 
@Scripts.Render("~/Scripts/jquery.validate.unobtrusive.min.js") 
@Scripts.Render("~/Scripts/jquery.validate.min.js") 

這是我的視圖模型針對IM測試報名時間:

public class RegisterVM 
    { 
     [Required(ErrorMessage="Username Required")] 
     public string username { get; set; } 

     [RegularExpression(@"((?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,20})")] 
     [Required(ErrorMessage="Password Required")] 
     public string password { get; set; } 

     [Compare("password", ErrorMessage="Passwords do not match")] 
     public string passwordConfirm { get; set; } 
    } 

這是我的HTML

@using(@Html.BeginForm()){ 

    @Html.LabelFor(model => model.username) 
    @Html.EditorFor(model => model.username) 
    @Html.ValidationMessageFor(model => model.username)<br /> 

    @Html.LabelFor(model => model.password) 
    @Html.PasswordFor(model => model.password) 
    @Html.ValidationMessageFor(model => model.password)<br /> 

    @Html.LabelFor(model => model.passwordConfirm) 
    @Html.EditorFor(model => model.passwordConfirm) 
    @Html.ValidationMessageFor(model => model.passwordConfirm)<br /> 

    <input type="submit" value="Register" /> 


} 

不想發佈在這裏,我讀了幾個關於這裏相關的話題,但似乎無法解決我的問題,當我點擊提交發布/獲取請求。

+3

我不記得確切,但在'_layout.cshtmlfile'正確加載的文件的順序?你是不是錯過了第一個聲明中的js,你是否檢查過在瀏覽器中加載的文件? –

+0

查看源代碼顯示所有文件已加載。 – Larry

+3

您是否嘗試在validate.unobtrusive.min.js之前加載validate.min.js – Adil

回答

22

感覺就像這應該工作,我想你需要validate.unobtrusive.min.js之前加載validate.min.js

+0

已經覆蓋,這是答案,但上面的意見不能被標記爲正確的!謝謝 – Larry

+0

是的,我上面評論,但後來意識到,作爲回答可能有助於其他 – Adil

+0

標記爲正確的,謝謝:) – Larry

2

那是因爲你之前沒有加載jquery.validate.min.js不顯眼的一個。

3

在你的頁面,你必須在頁面底部的這兩條線段

請參見仔細

@section Scripts { 
@Scripts.Render("~/bundles/jqueryval") 
} 
+0

我已經在特定頁面中添加了此腳本。 –

8

我有一個類似的問題和固定的唯一的事情是手動致電

$.validator.unobtrusive.parse($('form')); 

之前我按下提交按鈕。

我終於把它放在文檔準備好的回調中。

$(function() { 
    $.validator.unobtrusive.parse($('form')); 
}); 
+0

在嘗試了很多沒有成功的解決方案之後,這個工作非常好。謝謝 – IFink

+0

我在BundleConfig.cs中捆綁我的腳本並調用'$('#nameOfForm').validate();'不起作用。一旦我添加這條線,它開始工作,所以非常感謝 –

0
$('#divParent').load("url", 
        function() { 
        $.validator.unobtrusive.parse($('form'));} 
       ); 

注:這是如果要加載「形式」或需要「PartialView」動態「的內部格」使用AJAX調用

0

你只需要引用每次需要驗證網頁上公佈這些文件我的朋友!

<script src="~/Scripts/jquery.validate.js"></script>