Скрыть NameAttribute является RazorView - PullRequest
0 голосов
/ 22 июня 2011

Как мне скрыть атрибут:

[Display(Name = "dspName")]

или имя переменной из моей переменной в представлении (бритва)?

Моя проблема в том, что я определил пользовательский шаблон длялогическое значение, которое просматривает логическое значение, например:

varname/displayName: 'box'

Если я создаю представление с помощью:

@Html.EditorForModel(Model)

Результат:

varname/displayName
varname/displayName: 'box'

Результат в браузере:

html output

edit: my 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 Ответ

2 голосов
/ 22 июня 2011

Дополнительная метка, которую вы видите, запекается в шаблон редактора по умолчанию для класса Object. Таким образом, у вас есть две возможности:

  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>
            }
        }
    }
    
...