2010-09-12 46 views
38

我嘗試使用下面這行代碼添加客戶端驗證:在剃刀意見啓用客戶端驗證(ASP MVC 3)

@Html.EnableClientValidation()

但我不斷收到此錯誤信息:

編譯錯誤消息:CS1502:「Microsoft.WebPages.WebPageUltimateBase.Write(Microsoft.WebPages.Helpers.HelperResult)」的最佳重載方法匹配具有一些無效參數

這是wor國王對於任何人,或者這是在ASP MVC 3中的另一種方法?

回答

75

您可以使用以下代碼代替預期的代碼行。

@(ViewContext.ClientValidationEnabled = true) 

可能是htmlhelper的擴展方法中的一個疏忽。

其實,你可以通過執行以下操作

@{ Html.EnableClientValidation(); } 
+0

謝謝您的答覆,但是當我把你的代碼行到視圖它是所有輸出TRUE;到頁面中。我必須將代碼放在任何特別的地方嗎?現在我把它放在我的'@using(Ajax.BeginForm(...' – Martin 2010-09-12 16:09:17

+0

奇怪的,我沒有注意到,之前,謝謝:) @using(Ajax.BeginForm) – Buildstarted 2010-09-12 17:10:56

+10

它不適用於只是@的原因是因爲@期望寫東西到瀏覽器,但EnableClientValidation不返回任何東西,因此Microsoft.WebPages.WebPageUltimateBase.Write因此失敗 – Buildstarted 2010-09-12 17:22:07

63

嘿,在ASP.NET MVC3使用的HtmlHelper方法,沒有必要添加Html.EnableClientValidation()在視圖頁面,而是剛剛啓用clientValidation,如下圖所示webconfig文件:

<appSettings> 
    <add key="ClientValidationEnabled" value="true" /> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true" /> 
</appSettings> 
+9

順便說一句,你也應該把jqueryvalidation js文件放在你的視圖或你的佈局頁面中。 – bearing09 2010-12-05 13:18:23

+5

是的:NuGet [jQuery.Validation.Unobtrusive](http://nuget.org/packages/jQuery.Validation.Unobtrusive)並添加'''jquery.validate.min.js'和'jquery.validate.unobtrusive.min.js'。 – 2012-03-26 13:32:01

4

是否使用你的頁面,而不是Html.BeginForm的HTML <form>元素創建HTML表單。

我有此相同的問題,並制定出那是因爲我沒有使用Html.BeginForm創建我的FORM導致需要輸入屬性data-val-required="The Email field is required." data-val="true" class="input-validation-error和驗證佔位,雖然我沒有被注入到頁面甚至我的視圖頁上插入了@Html.ValidationMessageFor(m => m.User.Role)

6

這個標籤

 @{ Html.EnableClientValidation(false); } 

一定要來之前,

@using (Html.BeginForm()) 
0

在我的情況,我沒有使用EditorFor,但TextBoxFor!

請確保您使用:

   <td>@Html.EditorFor(m => m.Email)</td>