Почему мои отображаемые имена разрушают ярлыки в шаблоне редактора? - PullRequest
0 голосов
/ 26 марта 2012

Я использую цикл, как показано ниже, для визуализации метки и редактора для каждого свойства в модели представления:

@{
    var properties = ViewData.ModelMetadata.Properties.Where(pm => pm.ShowForEdit && !pm.IsComplexType && !ViewData.TemplateInfo.Visited(pm));
}
    @foreach (var prop in properties)
    {
        <li>
            <div class="form-line">
                @{
        if (prop.HideSurroundingHtml)
        {
                    @Html.Editor(prop.DisplayName ?? prop.PropertyName)
        }
        else
        {
                    @Html.Label((prop.IsRequired ? "* " : "") + (prop.DisplayName ?? prop.PropertyName))
                    @Html.Editor(prop.PropertyName)
        }
                }
            </div>
        </li>
    }

И модель:

    [Required]
    [Display(Name = "Status")]
    [UIHint("DropDown", "MVC", "SelectListName", "StatusSelectList")]
    public Guid StatusId { get; set; }

    [Required]
    [Display(Name = "Emp Number")]
    public string RefNum { get; set; }

    [Required]
    public string Surname { get; set; }

Когда я использую отображаемое имя "Emp. No.", метка не отображается вообще. Когда я использую отображаемое имя «Emp. Number», отображается только метка «Number». Только когда я использую отображаемое имя «Emp Number», без каких-либо полных остановок, мой полный, ожидаемый ярлык будет обработан. Что здесь происходит?

1 Ответ

1 голос
/ 26 марта 2012

Вы используете неправильную перегрузку помощника Html.Label. Первый аргумент представляет выражение, которое будет указывать на редактор, так что атрибут for метки указывает на соответствующее поле ввода. Второй аргумент позволяет вам установить текст метки. Попробуйте вот так:

@Html.Label(prop.PropertyName, (prop.IsRequired ? "* " : "") + (prop.DisplayName ?? prop.PropertyName))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...