0

ビューのモデルとカスタムオブジェクトがプロパティとしてあります。次のようになります。

class SomeModel {
  public object Data { get; set; }
}

とビューで:

@model Blablabla.SomeModel

たとえば、Model.Dataに、プロパティ:NameDateBirthおよび。を持つオブジェクトを配置しAmountました。次のように、これらのプロパティのエディターを作成したいと思います。

@Html.EditorFor(m => m.Data.Name)
@Html.ValidateMessageFor(m => m.Data.Name)

しかし、であるためこれを行うことはできず、コンパイラはこれを渡しませんm.DataobjectEditorForの場合-問題なく自分のものに置き換えることができ<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)が含まれています。

4

1 に答える 1

0

私は常にdynamicキーワードの使用を提案することをためらっていますが、あなたがしていることについては、これは少なくとも 1 つのオプションです。

Dataタイプのプロパティを作成するdynamicことで、実行時にプロパティを設定し、EditorFor.

public dynamic Data { get; set; }
于 2011-07-04T10:26:04.293 に答える