我有一個視圖模型,它包含一個類的5個實例作爲子屬性。這些子屬性是使用一個局部視圖中呈現,如下所示:爲什麼ValidationMessageFor在這種情況下顯示我的驗證消息?
<%Html.RenderPartial("_EntryItemForm", Model.EntryItem1, new ViewDataDictionary { TemplateInfo = new System.Web.Mvc.TemplateInfo { HtmlFieldPrefix = "EntryItem1" } }); %>
<%Html.RenderPartial("_EntryItemForm", Model.EntryItem2, new ViewDataDictionary { TemplateInfo = new System.Web.Mvc.TemplateInfo { HtmlFieldPrefix = "EntryItem2" } }); %>
<%Html.RenderPartial("_EntryItemForm", Model.EntryItem3, new ViewDataDictionary { TemplateInfo = new System.Web.Mvc.TemplateInfo { HtmlFieldPrefix = "EntryItem3" } }); %>
<%Html.RenderPartial("_EntryItemForm", Model.EntryItem4, new ViewDataDictionary { TemplateInfo = new System.Web.Mvc.TemplateInfo { HtmlFieldPrefix = "EntryItem4" } }); %>
<%Html.RenderPartial("_EntryItemForm", Model.EntryItem5, new ViewDataDictionary { TemplateInfo = new System.Web.Mvc.TemplateInfo { HtmlFieldPrefix = "EntryItem5" } }); %>
內局部視圖,我有以下(表示一個場只):
<%: Html.LabelFor<EntryItemForm, string>(x => x.ItemName)%>
<%: Html.TextBoxFor<EntryItemForm, string>(x => x.ItemName)%>
<%: Html.ValidationMessageFor(x => x.ItemName)%>
標籤和文本框都呈現使用正確的ID,名稱等,默認的模型綁定器可以完美地處理所有事情。
不幸的是,即使ModelState包含ItemName字段的錯誤,ValidationMessage也不會出現。如果我向父視圖添加ValidationSummary,則會顯示錯誤。通常我只是使用ValidationSummary並繼續前進,但我正在努力的設計需要內聯驗證消息。
有沒有人有任何想法,爲什麼這可能是?
謝謝你的建議。我試着用你指定的方式來使用EditorFor,而我完全沒有:沒有錯誤,也沒有輸出!任何想法可能會導致什麼? – 2011-04-13 09:07:36
@Paul Suart,編輯器模板的名稱和位置很重要。它必須位於'〜/ Views/Shared/EditorTemplates'文件夾中,並命名爲'XXX.ascx',其中'XXX'是它強類型的名稱。這必須是「EntryItem1」屬性的類型。 – 2011-04-13 10:15:07
嗯,我得到了EditorFor <>去(是我自己的錯,因爲我沒有意識到它輸出一個MvcHtmlString而不是寫入響應),但仍然沒有喜悅。已經更新了這個問題。 – 2011-04-13 20:58:19