DisplayNameFor标签更改文本

Has*_*Mir 3 asp.net-mvc asp.net-mvc-5

我在实体A的详细信息视图中有以下代码

<dt>
    @Html.DisplayNameFor(model => model.User1.UserName)
</dt>
<dd>
    @Html.DisplayFor(model => model.User1.UserName)
</dd>
Run Code Online (Sandbox Code Playgroud)

我想更改其在“详细信息视图”中显示的标题,该标题显示了要由其提交的UserName,因此无法重载,因为DisplayName对于没有带有两个参数的任何重载函数均无法 @Html.DisplayFor(model => model.User1.UserName,"Submitted By")正常工作

这是我的错误模型,我在其中分配和提交的字段与用户模型相关,所以我遇到问题,即“用户名”显示在“名称”列的位置,该列应将名称显示为“分配给” ”和“提交者”

    public partial class Bug
{
    public int ID { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public string Priority { get; set; }
    public string Severity { get; set; }
    public string Status { get; set; }
    public int AssignedTo { get; set; }
    public int SubmittedBy { get; set; }
    public int ComponentID { get; set; }
    public int ProjectID { get; set; }
    public System.DateTime DueDate { get; set; }
    public Nullable<int> BugNumber { get; set; }
    public string NormalFlow { get; set; }
    public System.DateTime CreationDate { get; set; }

    public virtual Component Component { get; set; }
    public virtual Project Project { get; set; }
    public virtual User User { get; set; }
    public virtual User User1 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

Dea*_*man 7

您可以通过模型上的[Display]属性控制显示的文本。在您的情况下,您需要在User1的基础模型上设置属性:

public class User
{
   [Display(Name = "Submitted By")]
   public string UserName;
}
Run Code Online (Sandbox Code Playgroud)

有关DisplayAttribute类的更多详细信息,请参见https://msdn.microsoft.com/zh-cn/library/system.componentmodel.dataannotations.displayattribute.name%28v=vs.110%29.aspx


Aym*_*man 5

只要您要更改标签的显示文本,就无需更改模型。. 只需像这样编辑Razor View:

<dt>
    @Html.DisplayName("Submitted By")
</dt>
<dd>
    @Html.DisplayFor(model => model.User1.UserName)
</dd>
Run Code Online (Sandbox Code Playgroud)

要么

<dt>
        Submitted By
 </dt>
 <dd>
    @Html.DisplayFor(model => model.User1.UserName)
 </dd>
Run Code Online (Sandbox Code Playgroud)