別のクラスを指定する必要があるクラスがありますが、MVC ModelStateバリデータでセカンダリモデルが有効かどうかを確認する必要はありません。これは可能ですか?「サブモデル」を検証せずにMVC-3モデルを検証できますか?
public class WidgetType
{
public long Id { get; private set; }
[Required]
public string Name { get; set; }
...
}
public class Widget
{
public long Id { get; private set; }
[Required]
public string Name { get; set; }
[Required]
public WidgetType WidgetType { get; set; }
...
}
私は彼らが私はこのようなビューへ/から渡しているWidgetViewModel
クラスにカプセル化されています:
私のエンティティは次のようになり:ここ
は簡単な概要です...
@Html.DropDownListFor(m => m.Widget.WidgetType.Id, new SelectList(new EquipmentViewModel().EquipmentTypes, "Id", "Name"))
...
012:
public class WidgetViewModel
{
public Widget Widget { get; set; }
public ICollection<WidgetType> WidgetTypes
{
get
{
return _repository.GetWidgets();
}
}
...
}
私の見解は次のようになります
これらのすべては、検証以外は機能します。 "Widget.WidgetType.Name"
が必要なため、ModelState.IsValid
は常に偽です。 WidgetType
を選択する必要がありますが、ModelStateを「Widget.WidgetType.Id」よりも深く検証することは望ましくありません(その外字キーにはWidget
が必要です)。
これを行うより良い方法はありますか?再帰的にプロパティを調べることなく検証する方法があるはずですが、見つけられません。私は何が欠けています...?
を与えます検証。 http://blog.stevensanderson.com/2010/02/19/partial-validation-in-aspnet-mvc-2/ – bmosh
@bmoshそれは有望そうです。オフィスでそれをチェックします。 – Farray
@bmosh 'ActionFilterAttribute'を作成することで、まさに私が望むことができました。あなたが答えを投稿するなら、私はそれを受け入れるでしょう。ありがとう。 – Farray