0

多くの例でデータ注釈に関する幅広いリソースを見つけることができません。

[ScaffoldColumn(false)]
public int ReadCount { get; set; }

ReadCountで見せDisplayForModelたい、で使いたくないEditorForModel。これどうやってするの?これは可能ですか?

ありがとう。

4

1 に答える 1

1

1つの可能性は、プロパティに設定した場合でも値を表示するカスタムObject display template( )を作成することです。~/Views/Shared/DisplayTemplates/Object.cshtml[Scaffold(false)]

@if (Model == null) 
{
    @ViewData.ModelMetadata.NullDisplayText
}
else if (ViewData.TemplateInfo.TemplateDepth > 1) 
{
    @ViewData.ModelMetadata.SimpleDisplayText
}
else 
{
    foreach (var prop in ViewData.ModelMetadata.Properties.Where(pm => !ViewData.TemplateInfo.Visited(pm))) 
    {
        if (prop.HideSurroundingHtml) 
        {
            @Html.Display(prop.PropertyName)
        }
        else 
        {
            if (!String.IsNullOrEmpty(prop.GetDisplayName())) 
            {
                <div class="display-label">@prop.GetDisplayName()</div>
            }
            <div class="display-field">@Html.Display(prop.PropertyName)</div>
        }
    }
}

ご覧のとおり、私が作成したデフォルトの表示テンプレートとの唯一の違いは、pm.ShowForDisplay条件を削除したforeachセレクターにあります。

次のプロパティがある場合:

[ScaffoldColumn(false)]
public int ReadCount { get; set; }

DisplayForModelで表示され、EditorForModelでは表示されません。

于 2012-12-23T18:41:06.360 に答える