0

時間の int のように、モデルに計算されるデータを追加するために、モデル用の特別なビューモデル クラスを作成しました。

public class SessionView
{
    public Session Session { get; set; }
    public int StartHour { get; set; }
    public int StartMin { get; set; }
    public int EndHour { get; set; }
    public int EndMin { get; set; }
}

カスタムバリデーターで検証を行うとき、ビューがポストバックでエラーを追加する適切な場所を見つけるために必要な「.Session」なしでエラーを ModelState に追加します。

ModelState.AddModelError("Name","error")の代わりにas を追加して、エラーを表示できるようにするにはどうすればよいModelState.AddModelError("Session.Name","error")ですか?

4

1 に答える 1

0

これは不可能だと思います。ビュー内に次のフィールドがある場合:

@Html.EditorFor(x => x.Session.Name)
@Html.ValidationMessageFor(x => x.Session.Name)

対応するModelStateキーはSession.Nameであり、それをエラー メッセージに関連付ける場合は、これを使用する必要があります。

ただし、これらの問題を回避するために、データ注釈を使用するか、カスタム検証属性を記述してから、対応するプロパティをそれらの属性で装飾することができます。この方法では、キーについて心配する必要はありません。たとえば、コレクションを使用している場合は、事態がさら​​に悪化する可能性があるためですSessions[3].Name

データ注釈の代わりに、FluentValidation.Netをチェックアウトできます。

于 2012-10-12T16:06:55.640 に答える