2010-03-20 137 views
4

我有我的asp.net mvc視圖中的4個窗體。我已啓用客戶端驗證每個通過把<% Html.EnableClientValidation(); %>以上每個表格Html.BeginForm()。問題是,不管我爲表單指定了ID的事實,只要我點擊提交其他表單,頁面上的第一個表單就會被驗證。asp.net mvc客戶端驗證多個表單在一個頁面

這個用法是否被支持,或者我做錯了什麼?

回答

1

這可能有助於

   <%=Html.ValidationMessageFor(m => ((RegistrationFormModel)m.Data).Email, null, new { id = "registration_Email" })%> 
+0

那就是你只是爲生成的字段指定一個自定義的ID字段。炒鍋罰款。 – imlarry 2010-06-25 09:22:50

+0

謝謝,這使我在部分中使用相同的表單時,無法添加新數據和編輯現有數據。只是添加了一個簡單的檢查,以查看主鍵是否爲0(即新數據),併爲這些添加了自定義ID。 – 2011-04-27 15:19:08

0

確保您有屬性的驗證消息。除非您有驗證消息或(ValidateFor()),否則該屬性不會添加到表單提交時驗證的元素集合中。

查看此question欲知更多信息。

+0

我正在使用Html.ValidationMessageFor – ntombela 2010-03-20 17:11:16

+0

客戶端驗證適用於一個表單,但只要我每次添加更多表單時,我會在其他表單上單擊提交,頁面上的第一個表單將被驗證。 – ntombela 2010-03-20 17:14:31

+0

嗯。看起來它只會生成一組驗證元數據。您可能需要使用一些備用的客戶端驗證。 – tvanfosson 2010-03-20 19:40:26

0

MVC2完全支持你正在尋找的設置,我的猜測是,你喜歡顯示登記表,並在同一頁上的登錄表單應用這種東西?

如果是這樣,你只需要每個窗體有獨立的屬性名稱,即

LoginModel將有一個用戶名財產和RegistrationModel將有一個RegistrationUsername。

那裏不是一個很好的例子,但是可能發生的情況是驗證發射了交叉表單,因爲您的屬性具有相同的名稱。