ビューのモデルとカスタムオブジェクトがプロパティとしてあります。次のようになります。
class SomeModel {
public object Data { get; set; }
}
とビューで:
@model Blablabla.SomeModel
たとえば、Model.Dataに、プロパティ:Name、DateBirthおよび。を持つオブジェクトを配置しAmountました。次のように、これらのプロパティのエディターを作成したいと思います。
@Html.EditorFor(m => m.Data.Name)
@Html.ValidateMessageFor(m => m.Data.Name)
しかし、であるためこれを行うことはできず、コンパイラはこれを渡しませんm.Data。objectEditorForの場合-問題なく自分のものに置き換えることができ<input type="..." ... />ます。
しかし、MVCのValidator(MicrosoftMvcValidation.jsから)を入力に含める方法が見つかりません。また、からのすべての属性に対して独自のJavaScriptを作成したくありませんSystem.ComponentModel.DataAnnotations。
カスタムオブジェクトにMVCのバリデーターを使用する方法はありますか(リフレクションを介してプロパティを列挙することでエディターを生成しています)。
UPD:@Html.ValidateMessageFor(m => m.Data.Name)以前に物件名がわからなかったからといって書くことはできません。これは、次のようなリフレクションを介してのみ実行できます@Html.ValidateMessageFor(m => m.Data.GetType().GetProperty(colName).GetValue(m.Data, null))。ここでcolName、プロパティ名(Name、DateBirth、またはAmount)が含まれています。