マイモデルが正しく検証されています。デバッグ中に検証結果にピークを迎えると、すべてが正しいことがわかります。しかし、すべて無効なものが1つしかない場合でも、私の検証結果が表示されます。ここでも、デバッグ中に、唯一つのフィールドを正しく検証結果に表示されますが、私のビューがレンダリングされるときに、すべての私達の表示: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
に設定されています。私はCityに正しく入れますが、Departmentは空白のままにしておきます。再び、それはコントローラ上で無効であることを示し、プロパティ部門は問題を抱えていますが、私の見解ではの両方ともプロパティの "nullではないかもしれません"というメッセージが表示されます。私のビューに4つのプロパティと4つのValidationMessageタグがある場合、1つのプロパティが有効でなくても...すべて4が表示されます。どうしたんだ?
)=長い一日となっていることの関節。私はこれがHtml.ValidationMessageForが最後のプロパティをレンダリングするだけなので、Html.ValidationMessage( "City")に変換し、Html.ValidationMessage( "Widget.City")が必要だからだと信じています。 – user500038
私は実際にこれをやらなければならなかったプロジェクトで作業を終え、それは私のために働いた。 ValidationMessageForは、ビューモデルのプロパティがどれほど浅いか深いかは気にしません。たとえば、私が取り組んでいたプロジェクトでは、厳密に型指定されたビューで次のようなものを使用しました:Html.ValidationMessageFor(model => model.MySubObject.MyProperty) – Anthony
ビューモデルに検証注釈を設定していますか? – Anthony