2013-07-25 233 views
2

我想在我的ASP.NET MVC 4应用程序的HTML中显示属性的显示名称。 但是,即使我已经在viewmodel中设置了显示名称,仍然会显示原始变量名称。为什么不显示显示名称?

视图模型:

public class Manage_ManagePasswordViewModel 
{ 
    [Display(Name="Name")] 
    public string name; 
    [Display(Name = "SubID")] 
    public string subId; 
    [Display(Name = "Conversions")] 
    public int conversions; 
    [Display(Name = "Password")] 
    public string password; 
    public UserProfile owner; 

    public Manage_ManagePasswordViewModel(ProtectedPassword pw) 
    { 
     name = pw.Name; 
     subId = pw.SubId; 
     conversions = pw.GetConversions(); 
     password = pw.Password; 
     owner = pw.Owner; 
    } 
} 

的CSHTML文件:

@model Areas.Admin.Models.ViewModels.Manage_ManagePasswordViewModel 

<div class="editor-label"> 
    @Html.DisplayNameFor(m => m.name): 
    @Html.DisplayTextFor(m => m.name) 
</div> 
<div class="editor-label"> 
    @Html.DisplayNameFor(m => m.password): 
    @Html.DisplayTextFor(m => m.password) 
</div> 
<div class="editor-label"> 
    @Html.DisplayNameFor(m => m.subId): 
    @Html.DisplayTextFor(m => m.subId) 
</div> 
<div class="editor-label"> 
    @Html.DisplayNameFor(m => m.conversions): 
    @Html.DisplayTextFor(m => m.conversions) 
</div> 
<div class="editor-label"> 
    @Html.DisplayNameFor(m => m.owner.UserName): 
    @Html.UserLink(Model.owner.UserName, Model.owner.UserId) 
</div> 
+0

'DisplayName'是使用'LabelFor'(我说得对不对?) – wudzik

+0

@wudzik根据http://stackoverflow.com/a/5243714/1717823,它是。 – KBKarma

+0

'@ Html.LabelFor(m => m.name)'工作吗? –

回答

1

使用性质的,而不是领域,为前。

[Display(Name="Name")] 
public string name {get;set;} 
+0

非常感谢,解决了它。介意解释为什么我需要使用属性? –

+0

也许,这只是常见约定(与MVC中的许多其他功能一样,例如控制器命名),MVC开发团队使用这种惯例。稍后对MVC系统使用.net框架反射,很容易检查属性并填充绑定模型。但这是我的观点,我不是MVC内部的大师) – Dmytro