隐藏NameAttribute是RazorView

时间:2011-06-22 13:35:41

标签: c# asp.net-mvc view razor

如何隐藏属性:

[Display(Name = "dspName")]

或者(razor)视图中我变量的变量名?

我的问题是我为布尔值定义了一个自定义模板,它可以查看布尔值,如:

varname/displayName: 'box'

如果我用:

创建视图
@Html.EditorForModel(Model)

结果是:

varname/displayName
varname/displayName: 'box'

浏览器中的结果:

html output

编辑:我的BooleanTemplate

@model System.Boolean?

@{
    string name = string.Empty;
    if (!string.IsNullOrWhiteSpace(ViewData.ModelMetadata.DisplayName))
    {
        name =ViewData.ModelMetadata.DisplayName;
    }
    else
    {
        name = ViewData.ModelMetadata.PropertyName;
    }
}
@name: 
@Html.CheckBox("", Model.HasValue ? Model : Model.Value)

1 个答案:

答案 0 :(得分:2)

您看到的附加标签将被烘焙到Object类的default editor template中。所以你有两种可能性:

  1. 对每个属性使用@Html.EditorFor(x => x.SomeBoolProperty)等,而不是@Html.EditorForModel()
  2. 修改对象类(EditorTemplates/Object.cshtml)的默认编辑器模板以删除标签(注意我在评论中添加的部分):

    @if (ViewData.TemplateInfo.TemplateDepth > 1) 
    { 
        @ViewData.ModelMetadata.SimpleDisplayText
    }
    else 
    {
        foreach (var prop in ViewData.ModelMetadata.Properties.Where(pm => pm.ShowForEdit && !ViewData.TemplateInfo.Visited(pm))) 
        {
            if (prop.HideSurroundingHtml) 
            {
                @Html.Editor(prop.PropertyName)
            }
            else 
            {
                @*if (!String.IsNullOrEmpty(Html.Label(prop.PropertyName).ToHtmlString())) 
                {
                    <div class="editor-label">@Html.Label(prop.PropertyName)</div>
                }*@
                <div class="editor-field">
                    @Html.Editor(prop.PropertyName)
                    @Html.ValidationMessage(prop.PropertyName, "*")
                </div>
            }
        }
    }