2

我注意到,驗證特性只添加到經由Html.EditorFor(中創建的)輔助方法和所述元件的屬性是一個內方法,即分別創建「Form」標籤和屬性。添加驗證屬性與Html.EditorFor次()一個Html.BegingForm()方法中的方法不

除了手動創建元素和屬性以外,還有什麼方法可以將所需的驗證屬性添加到使用助手方法創建的元素中,哪些不在Html.BegingForm()方法中?

我需要在客戶端進行驗證,並且不希望手動創建所述屬性或顯式編寫此行爲,而是利用MVC功能,根據模型中的元數據自動添加所述屬性以用於客戶端的jquery-validate插件。

回答

2

的不引人注目的驗證特性發射,僅當:

  • UnobtrusiveJavaScriptEnabled標誌被設置爲true
  • ViewContext.FormContext不是null(例如,HTML輔助是Html.BeginForm塊內執行)

因此,您可以在使用Html助手之前手動創建FormContext並將其分配給ViewContext.FormContext

@{ 
    ViewContext.FormContext = new FormContext(); 
} 

@Html.TextBoxFor(x => x.SomeProperty) 

但是你要注意,這種方法你的Html.BeginForm嵌套功能喪失,所以如果你想創建一個新的邏輯表,您需要重新創建new FormContext()和管理舊背景下自己。

+0

除此之外,如果你在編輯模板使用下拉列表中,那麼你還需要指定「M => M」的選擇,而不是「M =>模式」。這個評論是爲其他誰遵循,而不是nemesv誰是優秀的提示只是讓我的一天注意:-) –