私は自分のカスタム属性のチェックとデータベースからのメタデータの取得のために、自分自身のメタアタプロプロバイダを実装しています。私は、例えば、1を削除した場合、MVC metatdataproviderとhtmlヘルパー
<div class="editor-label">
@Html.LabelFor(model => model.Id)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Id)
@Html.ValidationMessageFor(model => model.Id)
</div>
プロパティIDのために3回呼び出さ
protected override ModelMetadata CreateMetadata(IEnumerable<Attribute> attributes, Type containerType, Func<object> modelAccessor, Type modelType, string propertyName)
機能:私はこのようなビューを持っている場合
public class EntityPropertyMetadataAttribute: Attribute
{
[MaxLength(256)]
public string EntityFullName { get; set; }
[MaxLength(64)]
public string PropertyName { get; set; }
public string DisplayName { get; set; }
public string DisplayFormatString { get; set; }
public string EditFormatString { get; set; }
public object DefaultValue { get; set; }
}
は今、私は次のことを観察し:
<div class="editor-field">
@Html.EditorFor(model => model.Id)
@Html.ValidationMessageFor(model => model.Id)
</div>
g 2回呼び出されます。 CreateMetadataは、モデル内の各プロパティの22途方もないと呼び出さ
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
@Html.EditorForModel(Model)
<p>
<input type="submit" value="Create" />
</p>
}
: は今、私はこれを使用するとき。 それはあなたがパフォーマンスを賢明にしたいとは思っていません。おそらく、私はDBコード(現在CreateMetadataメソッド内にある)を他の場所に接続するべきです。
ご意見がありがとうございます。 MVC拡張の助けのビットが正しい軌道に乗ってようやく
歓声
独自のメタデータプロバイダではどうしますか? – jgauffin
私は異なる役割を持つユーザーに対して異なる「設定」を行うことができます。 – Jamee
異なるユーザーは、データを表示するときにグループによって異なる設定を使用します。 – Jamee