dataannotations scaffoldcolumn?

时间:2012-12-23 18:16:31

标签: asp.net-mvc data-annotations

我无法通过许多示例找到关于数据注释的广泛资源。

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

我希望ReadCount显示DisplayForModel,我不想在EditorForModel中使用它。我怎样才能做到这一点?这可能吗?

感谢。

1 个答案:

答案 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一起显示。