C# Viewmodel DisplayName上的悬空类未在LabelFor上使用

C# Viewmodel DisplayName上的悬空类未在LabelFor上使用,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,我正在尝试获取视图模型上的内部类的显示名称,以便在labelfor上显示 但是,它仅显示DetailsTab.PrimaryContact.Name的“名称” 我也尝试过将属性更改为Display(Name=“”),但似乎不起作用。无论我看到哪里,他们都说这应该起作用,但我就是无法让它起作用。我错过什么了吗 问题:如何获取内部属性以使用labelfor上的displayname public class CustomerDetailsData { [DisplayName

我正在尝试获取视图模型上的内部类的显示名称,以便在labelfor上显示

但是,它仅显示DetailsTab.PrimaryContact.Name的“名称” 我也尝试过将属性更改为Display(Name=“”),但似乎不起作用。无论我看到哪里,他们都说这应该起作用,但我就是无法让它起作用。我错过什么了吗

问题:如何获取内部属性以使用labelfor上的displayname

public class CustomerDetailsData
    {
        [DisplayName("Name")]
        [StringLength(250)]
        public string Name { get; set; }
        [StringLength(250)]
        public string Logo { get; set; }
        [DisplayName("Tenant ID")]
        public string CustomerId { get; set; }
        public DetailsData DetailsTab { get; set; }
        public class DetailsData
        {
            [DisplayName("Industry")]
            [StringLength(250)]
            public string Industry { get; set; }
            [DisplayName("Team Count")]
            [StringLength(250)]
            public string TeamCount { get; set; }
            public PrimaryContactData PrimaryContact { get; set; }

            public class PrimaryContactData
            {
                [DisplayName("Primary Contact Name")]
                public string Name { get; set; }
                [DisplayName("Primary Contact Email")]
                public string Email { get; set;}
                [DisplayName("Primary Contact Phone")]
                public string Phone { get; set;}
            }
        }
    }



<div class="row">
     <div class="large-2 columns">
          @Html.LabelFor(model => model.DetailsTab.PrimaryContact.Name)
     </div>
     <div class="large-10 columns">
          @Html.DisplayFor(model => model.DetailsTab.PrimaryContact.Name)
     </div> 
</div>
公共类CustomerDetailsData
{
[显示名称(“名称”)]
[长度(250)]
公共字符串名称{get;set;}
[长度(250)]
公共字符串标志{get;set;}
[显示名称(“租户ID”)]
公共字符串CustomerId{get;set;}
public DetailsData DetailsTab{get;set;}
公共类详细信息数据
{
[显示名称(“行业”)]
[长度(250)]
公共字符串行业{get;set;}
[显示名称(“团队计数”)]
[长度(250)]
公共字符串TeamCount{get;set;}
public PrimaryContactData PrimaryContact{get;set;}
公共类PrimaryContactData
{
[显示姓名(“主要联系人姓名”)]
公共字符串名称{get;set;}
[显示名称(“主要联系人电子邮件”)]
公共字符串电子邮件{get;set;}
[显示名称(“主要联系人电话”)]
公用字符串电话{get;set;}
}
}
}
@LabelFor(model=>model.DetailsTab.PrimaryContact.Name)
@DisplayFor(model=>model.DetailsTab.PrimaryContact.Name)

似乎我的项目没有正常构建,我进行了重建,它开始拾取我的DisplayName

只是为了进行测试,您能否将
PrimaryContactData
中的
Name
属性更改为其他内容,如
PrimaryContactName
并再次测试它?Hi@Alisson我做了上述操作,它返回了“PrimaryContactName”,因此假设其间距为大写。理想情况下,我可以使用LabelFor和DisplayName,因为我觉得没有必要在属性名称中再次声明PrimaryContact,因为我已经将它分离出来了。我认为这不是原因。检查属性时,它会查看
DisplayNameFor()
和其他
HTML
helper方法依赖于
Model
。实际上,看起来由于属性名(name)恰好存在于
模型中(即
CustomerDetailsData
),助手考虑的是来自模型的属性,而不是子类。我确实将属性重命名回name,然后再次测试,它可以很好地将属性用作名称。重新启动visual studio为我修复了它。感谢您的回复;如果你没有把我的想法记下来,我就不会尝试了。嗯,那很有趣。我从来没有遇到过这样的麻烦,但很高兴知道你必须做什么。