我有我的asp.net mvc視圖中的4個窗體。我已啓用客戶端驗證每個通過把<% Html.EnableClientValidation(); %>
以上每個表格Html.BeginForm()
。問題是,不管我爲表單指定了ID的事實,只要我點擊提交其他表單,頁面上的第一個表單就會被驗證。asp.net mvc客戶端驗證多個表單在一個頁面
這個用法是否被支持,或者我做錯了什麼?
我有我的asp.net mvc視圖中的4個窗體。我已啓用客戶端驗證每個通過把<% Html.EnableClientValidation(); %>
以上每個表格Html.BeginForm()
。問題是,不管我爲表單指定了ID的事實,只要我點擊提交其他表單,頁面上的第一個表單就會被驗證。asp.net mvc客戶端驗證多個表單在一個頁面
這個用法是否被支持,或者我做錯了什麼?
這可能有助於
<%=Html.ValidationMessageFor(m => ((RegistrationFormModel)m.Data).Email, null, new { id = "registration_Email" })%>
確保您有屬性的驗證消息。除非您有驗證消息或(ValidateFor()),否則該屬性不會添加到表單提交時驗證的元素集合中。
查看此question欲知更多信息。
我正在使用Html.ValidationMessageFor – ntombela 2010-03-20 17:11:16
客戶端驗證適用於一個表單,但只要我每次添加更多表單時,我會在其他表單上單擊提交,頁面上的第一個表單將被驗證。 – ntombela 2010-03-20 17:14:31
嗯。看起來它只會生成一組驗證元數據。您可能需要使用一些備用的客戶端驗證。 – tvanfosson 2010-03-20 19:40:26
MVC2完全支持你正在尋找的設置,我的猜測是,你喜歡顯示登記表,並在同一頁上的登錄表單應用這種東西?
如果是這樣,你只需要每個窗體有獨立的屬性名稱,即
LoginModel將有一個用戶名財產和RegistrationModel將有一個RegistrationUsername。
那裏不是一個很好的例子,但是可能發生的情況是驗證發射了交叉表單,因爲您的屬性具有相同的名稱。
那就是你只是爲生成的字段指定一個自定義的ID字段。炒鍋罰款。 – imlarry 2010-06-25 09:22:50
謝謝,這使我在部分中使用相同的表單時,無法添加新數據和編輯現有數據。只是添加了一個簡單的檢查,以查看主鍵是否爲0(即新數據),併爲這些添加了自定義ID。 – 2011-04-27 15:19:08