Как изменить [DisplayName "xxx"] в контроллере? - PullRequest
3 голосов
/ 10 августа 2010

Народ,

Я новичок MVC 2 и застрял в этой проблеме:

AccountModuls.cs

public class LogOnModel
{
[Required]
[DisplayName("User name")]
public string UserName { get; set; }
…
}

LogOn.aspx

<%: Html.LabelFor(m => m.UserName) %>

Текст «Имя пользователя» будет окончательно отображен на веб-сайте - на основании моего определения

[DisplayName («Имя пользователя»)].

Нет проблем.

Но как я могу изменить этот текст в AccountController.cs?

public ActionResult LogOn()
{   
return View();
}

1 Ответ

6 голосов
/ 10 августа 2010

Вы не можете :) Вам нужно изменить атрибут DisplayName в классе, чтобы помощник .LabelFor мог создать метку.Конечно, вы могли бы просто написать HTML-код для ярлыка, если хотите, чтобы он был чем-то другим.

Не понимаете, почему вы хотите изменить отображаемое имя со страницы на страницу?Я что-то неправильно понимаю?

Редактировать:

Пользовательский атрибут отображаемого имени:

public class MyDisplayName : DisplayNameAttribute
{
    public int DbId { get; set; }

    public MyDisplayName(int DbId)
    {
        this.DbId = DbId;
    }


    public override string DisplayName
    {
        get
        {
            // Do some db-lookup to retrieve the name
            return "Some string from DBLookup";
        }
    }
}

public class TestModel
{
    [MyDisplayName(2)]
    public string MyTextField { get; set; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...