我的模型已經過正確驗證。如果我在調試過程中驗證結果達到峯值,我會看到一切正確。但是,全部我的驗證結果將顯示,即使只有一個是無效的。同樣,在調試期間,只有一個字段被正確地顯示出來的驗證結果,但是當我的觀點被渲染所有的顯示:Html.ValidationMessage在所有字段上呈現,無論它們是否有效
[HttpPost]
public ActionResult Create(Widget widget)
{
if (widge.Valid)
{
// Save to db
}
retun View(widget);
}
我的觀點:
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" AutoEventWireup="true" Inherits="System.Web.Mvc.ViewPage<Widget>" %>
// took out a lot of html here
<form action="Create" method="post">
<input name="Widget.City" value="<%= Model.City == null ? "" : Model.City%>" />
<%= Html.ValidationMessage("Widget.City")%>
<input name="Widget.Department" value="<%= Model.Department == null ? "" : Model.Department %>" />
<%= Html.ValidationMessage("Widget.Department")%>
<button type="submit">Save</button>
</form>
讓我們說城市和部在我的模型中設置爲NotNull
,並且我正確放入城市,但將部門留空。同樣,它會顯示它在控制器上無效,財產部門有問題,但在我看來,我將得到兩個屬性的「可能不爲空」消息。如果我在視圖中有4個屬性和4個ValidationMessage標記,即使一個屬性無效...所有4個都會顯示。這是怎麼回事?
如果我使用強類型版本...什麼也不顯示。我相信這是因爲Html.ValidationMessageFor只呈現最後一個屬性,所以它變成了Html.ValidationMessage(「City」),我需要Html.ValidationMessage(「Widget.City」)...但我可能是錯的。 – user500038 2010-12-17 20:00:34
我其實剛剛完成了一個項目,我不得不這樣做,它爲我工作。 ValidationMessageFor不關心視圖模型中屬性的淺或深。例如,在我正在處理的項目中,我在強類型視圖中使用了類似以下內容:Html.ValidationMessageFor(model => model.MySubObject.MyProperty) – Anthony 2010-12-17 20:06:12
您是否在視圖模型上設置了任何驗證註釋? – Anthony 2010-12-17 20:07:12