我无法通过许多示例找到关于数据注释的广泛资源。
[ScaffoldColumn(false)]
public int ReadCount { get; set; }
我希望ReadCount
显示DisplayForModel
,我不想在EditorForModel
中使用它。我怎样才能做到这一点?这可能吗?
感谢。
答案 0 :(得分: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一起显示。