3

.Net MVC では、エディター テンプレートを使用して HTML を出力します。したがって、ビューでは以下のように記述し、文字列用のエディター テンプレート (説明は文字列オブジェクト) は、文字列型の正しい HTML とコントロールを出力します。

@Html.EditorFor(model => model.Entity.Description)

ビュー、つまり model.Entity.Description で使用したラムダ式を使用\再作成できるエディター テンプレートを作成したいと考えています。エディター テンプレートでは、この場合の説明でプロパティ名を取得できますが、ビューで使用したエディター テンプレートでラムダ式を取得できるようにしたいと考えています。つまり、モデル => model.Entity.Description エディター テンプレートの例以下です-MYLAMBDAEXPRESSIONHEREを関連する式に動的に置き換えたい、つまりmodel => model.Entity.Description:

@model IDictionary Fields //Or some object that also contains the lambda expression 
@using System.Collections;
@using System.Collections.Generic;
@using Mallon.Core.Artifacts;

@{
   var fieldName = ViewData.TemplateInfo.HtmlFieldPrefix;
   FieldAccessOptionality access = (FieldAccessOptionality)Model[fieldName];

   switch(access)
   {
      case FieldAccessOptionality.None:
         break;
      case FieldAccessOptionality.Mandatory:
         <div class="editor-label">
            @Html.LabelFor(MYLAMBDAEXPRESSIONHERE)
         </div>
         <div class="editor-field">
            @Html.EditorFor(MYLAMBDAEXPRESSIONHERE)
            @Html.ValidationMessageFor(MYLAMBDAEXPRESSIONHERE)
         </div>
      break;
   }
}
4

1 に答える 1

2

テンプレートでラムダ式にアクセスすることはできませんが、ModelMetadata を使用して詳細情報を取得できます。例えば、

 @ViewData.ModelMetadata.PropertyName

プロパティ名を指定します。あなたの例では、「説明」。

于 2014-02-17T21:18:24.443 に答える