0

我找不到关于数据注释的广泛资源,有很多例子。

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

我想用 显示ReadCountDisplayForModel我不想在EditorForModel. 我怎样才能做到这一点?这可能吗?

谢谢。

4

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 回答