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

时间:2010-08-10 07:28:56

标签: asp.net-mvc-2

民间,

我是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 个答案:

答案 0 :(得分: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; }
}