2013-08-20 91 views
3

我在MVC 4形式不以客戶端驗證。jQuery的不顯眼的驗證不工作

驗證也只是在服務器端發生。

@using (Html.BeginForm()) 
{ 
    @Html.AntiForgeryToken() 
    @Html.ValidationSummary(true) 

    <div class="editor-label"> 
     @Html.LabelFor(model => model.Name) 
    </div> 
    <div class="editor-field"> 
     @Html.EditorFor(model => model.Name) 
     @Html.ValidationMessageFor(model => model.Name) 
    </div> 

    <div class="editor-label"> 
     @Html.LabelFor(model => model.Phone) 
    </div> 
    <div class="editor-field"> 
     @Html.EditorFor(model => model.Phone) 
     @Html.ValidationMessageFor(model => model.Phone) 
    </div> 

    <p> 
     <input type="submit" value="Send" /> 
    </p> 
} 


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

捆綁代碼:

bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
        "~/Scripts/jquery.unobtrusive*", 
        "~/Scripts/jquery.validate*")); 

我還檢查了web.config設置:

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

模型我使用的是:

public class ContactUs 
{ 
    [Required] 
    public string Name { get; set; } 

    [Required] 
    public string Phone { get; set; } 
} 

頁在_Layout文件中。 腳本版本:jQuery的 和2.0.3s jQuery的 驗證插件1.11.1

所有腳本的工作,存在於網頁的源代碼。

可能是什麼問題?

+1

向我們展示你的模型嗎?你有把註釋放在你的模型屬性上嗎? –

+0

感謝您的回覆。帶有註釋的模型添加到問題 – David

+0

您有jquery.unobtrusive和jquery.validate,您是否包含基本jquery庫? –

回答

1

我添加鏈接到CDN腳本http://ajax.aspnetcdn.com/ajax/mvc/3.0/jquery.validate.unobtrusive.min.js ,現在它的工作。

找我的項目的歷史後,我發現,由於某些原因,當我更新了我的NuGet包從我的項目中刪除這個腳本,然後我的客戶端驗證停止工作。

我試圖添加這個腳本與NuGet軟件包,如「微軟jQuery Unobtrusive驗證」或「微軟jQuery Unobtrusive Ajax」和一些更多的軟件包,並沒有解決問題,所以我添加了CDN腳本,它的工作。

0

您可能需要告訴驗證摘要不排除屬性的錯誤:

@Html.ValidationSummary(false) 
+0

感謝,但它沒有工作 – David

+0

你確定你實際上得到一個錯誤?可能想調試並檢查控制器的動作,即ModelState是無效的並且包含您期望的錯誤。 – asymptoticFault

+0

服務器端從提交表單返回後出現驗證錯誤。但不在客戶端。我想要完成的目標是它不會到達服務器端。 – David

0

我今天有這個問題,我已經穿上捆/ jqueryval 3個文件:

bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
        "~/Scripts/jquery.unobtrusive*", 
        "~/Scripts/jquery.validate.min.js", 
        "~/Scripts/jquery.validate.unobtrusive.min.js"));