gpt4 book ai didi

asp.net-mvc - ViewModel 子对象的命名约定

转载 作者:行者123 更新时间:2023-12-03 12:14:21 25 4
gpt4 key购买 nike

我正在使用 ViewModel 方法构建一个 ASP.Net MVC 应用程序,以将我的域实体与我的 UI 使用的“模型”分开。我使用以下约定来命名我的 ViewModel 类。 ViewModelName = ViewName + "ViewModel"。例如:

Index + ViewModel = IndexViewModel

到目前为止,很好,这是一个相当普遍的模式,并且在 StackOverflow 和其他地方有很多关于这个主题的指导。我的问题涉及我的 ViewModel 使用的子对象。如果我的 ViewModel 需要一个属性与我的域模型对象相同的类,我只需将域模型包含在我的 ViewModel 中。例如:
public class PersonViewModel
{
public int PersonID { get; set; }
public Address Address { get; set; }
public string SomeOtherProperty { get; set; }
}

但是,当我需要一个与域模型具有不同属性的子对象时,我不确定要使用什么命名约定。例如,如果除了 Address 域模型中的内容之外,Address 还需要一些其他属性,我应该怎么称呼它?我认为 AddressViewModel 是这样的:
public class PersonViewModel
{
public int PersonID { get; set; }
public AddressViewModel Address { get; set; }
public string SomeOtherProperty { get; set; }
}

但这对我来说并不合适。我的直觉是 ViewModel 后缀应该只用于顶级 ViewModel。

我正在寻找其他开发人员关于他们在这种情况下使用什么命名约定的建议,特别是在这种情况下你会怎么称呼子对象?

最佳答案

我要回答这个只是因为没有其他人! (我知道我参加这个派对有点晚了!)

多年来,我已经多次考虑过这个确切的事情,并尝试了不同的约定。我发现的一件事是您正在使用命名约定......

如果您的命名约定是使用“ViewModel”作为 UI 模型类的后缀,那么子模型应该具有相同的后缀,否则您将违反自己的约定!

还假设您有一个地址表(或任何您拥有的),客户可以有地址,公司有地址,并且它们都使用相同的表,那么您可以为两个父模型使用相同的子模型。拥有一个 AddressViewModel 似乎是正确的.有一天你可能会有一个 View/PartialView它的型号是 IEnumerable<AddressViewModel>
我知道对此没有真正正确的答案,但这是我的答案:-)

关于asp.net-mvc - ViewModel 子对象的命名约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18817798/

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