gpt4 book ai didi

c# - ASP.net MVC 嵌套模型显示名称

转载 作者:行者123 更新时间:2023-11-30 17:45:35 25 4
gpt4 key购买 nike

我的模型如下:

型号:

public class Farm
{
public Animal Cow1 {get;set;}
public Animal Pig1 {get;set;}
}

public class Animal
{
[DisplayName("Animal Name")]
public string Name {get;set;}
}

查看:

@Html.LabelFor(m => m.Cow1.Name)
@Html.LabelFor(m => m.Pig1.Name)

我的问题是:

我希望 Cow1 的名称标签为“Cow Name”,而不是“Animal Name”,而 Pig1 的名称标签为“Pig Name”。

有可能吗?谢谢。


感谢@devqon,这个建议可以解决我的问题。但是我可以问更多关于从属性做这件事吗?如下所示,是否有类似属性“DisplayMetaData”的行为?

public class Farm
{
[DisplayMetaData(typeof(CowMetaData))]
public Animal Cow1 {get;set;}

[DisplayMetaData(typeof(PigMetaData))]
public Animal Pig1 {get;set;}
}

public class Animal
{
[DisplayName("Animal Name")]
public string Name {get;set;}
}

public class CowMetaData
{
[DisplayName("Cow Name")]
public string Name {get;set;}
}

public class PigMetaData
{
[DisplayName("Pig Name")]
public string Name {get;set;}
}

我希望代码以这种方式编写,就像我们使用属性 [MetadataType] 的方式一样,元数据在单独的类中定义,并且显示名称仍然可以被使用HtmlHelper LabelFor 函数。但是 [MetadataType] 只用于类而不用于属性,所以我想出了这个问题。

感谢任何帮助。

最佳答案

难道你不能重写你的类来实现继承来解决这个问题吗?例如:

public abstract class Animal
{
public abstract string Name { get; set; }
}

public class Cow : Animal
{
[Display(Name="Cow Name")]
public override string Name { get; set; }
}

public class Pig : Animal
{
[Display(Name = "Pig Name")]
public override string Name { get; set; }
}

public class Farm
{
public Cow Cow { get; set; }
public Pig Pig { get; set; }
}

关于c# - ASP.net MVC 嵌套模型显示名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27440202/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com