Lou*_*ton 7 asp.net-mvc naming-conventions asp.net-mvc-viewmodel
我正在使用ViewModel方法构建一个ASP.Net MVC应用程序,以使我的域实体与我的UI使用的"模型"分开.我使用以下约定来命名我的ViewModel类.ViewModelName = ViewName +"ViewModel".例如:
Index + ViewModel = IndexViewModel
Run Code Online (Sandbox Code Playgroud)
到目前为止,这是一个相当常见的模式,在StackOverflow和其他地方有很多关于这个主题的指导.我的问题涉及我的ViewModel使用的子对象.如果我的ViewModel需要一个具有与我的域模型对象相同属性的类,我只需在我的ViewModel中包含域模型.例如:
public class PersonViewModel
{
public int PersonID { get; set; }
public Address Address { get; set; }
public string SomeOtherProperty { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
但是,当我需要一个与我的域模型具有不同属性的子对象时,我不确定使用什么命名约定.例如,如果Address除了Address域模型中的内容之外还需要一些其他属性,我应该怎么称呼它?我认为AddressViewModel是这样的:
public class PersonViewModel
{
public int PersonID { get; set; }
public AddressViewModel Address { get; set; }
public string SomeOtherProperty { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
但这对我来说感觉不对.我的直觉是,ViewModel后缀应仅适用于顶级ViewModel.
我正在寻找其他开发人员在这种情况下使用的命名约定的建议,特别是在这种情况下你会称之为子对象的是什么?
我要回答这个问题只是因为没有人回答过!(我知道我参加这个聚会有点晚了!)
多年来我多次思考过这个问题并尝试了不同的约定。我发现的一件事是你正在使用命名约定......
如果您的命名约定是在 UI 模型类后添加“ViewModel”后缀,那么子模型应该具有相同的后缀,否则您将违反自己的约定!
另外,假设您有一个地址表(或您拥有的任何表),并且客户可以有一个地址,公司有一个地址,并且它们都使用同一个表,那么您可以为两个父模型使用相同的子模型。拥有一个似乎是正确的AddressViewModel。有一天你可能会有一个View/PartialView,它的型号是IEnumerable<AddressViewModel>
我知道这个问题没有真正正确的答案,但这就是我的答案:-)
| 归档时间: |
|
| 查看次数: |
2248 次 |
| 最近记录: |