如何在Controller中更改[DisplayName"xxx"]?

use*_*876 3 asp.net-mvc-2

伙计们,

我是MVC 2新手并坚持这个问题:

AccountModuls.cs

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

LogOn.aspx

<%: Html.LabelFor(m => m.UserName) %>
Run Code Online (Sandbox Code Playgroud)

根据我的定义,文本"用户名"将最终显示在网站上

[DisplayName("用户名")].

没问题.

但是如何在AccountController.cs中更改此文本?

public ActionResult LogOn()
{   
return View();
}
Run Code Online (Sandbox Code Playgroud)

Yng*_*sen 6

您不能:)您必须更改类的DisplayName属性,以便.LabelFor帮助程序构造标签.你当然可以自己写出标签的HTML,如果你想让它成为别的东西.

不明白为什么你想要从一页到另一页更改Displayname?我误会了什么吗?

编辑:

自定义displayname属性:

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; }
}
Run Code Online (Sandbox Code Playgroud)