伙计们,
我是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)
您不能:)您必须更改类的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)