asp.net-mvc – ASP.NET MVC视图模型的最佳做法
|
我的ASP.NET MVC站点连接到WCF服务以获取数据. WCF服务返回一个数据合同,如下所示: [DataContract]
public class Person
{
[DataMember]
public string First { get; set; }
[DataMember]
public string Last { get; set; }
}
我的MVC项目中的视图模型如下所示: public class MyViewModel
{
public string SomeExtraField1 { get; set; }
public string SomeExtraField2 { get; set; }
public string SomeExtraField3 { get; set; }
public Person Person { set; set; }
}
我的视图模型是否引用数据服务返回的“个人”数据合同?或者我应该在我的MVC项目中创建一个新的“Person”类,它反映“Person”数据合同中的属性? WCF服务调用隐藏在接口后面.似乎是让接口引用数据契约使我的接口是一个漏洞的抽象.不过,我有几个人相信在我的MVC项目中创建一个额外的“Person”类,反映数据合同是代码膨胀. 围绕这种分层/解耦的最佳做法是什么? 解决方法
不,避免这种情况,给开发人员使用视图模型的错误印象.在进行代码审查时,我经常会看到这样的代码: public class MyViewModel
{
public SomeDomainModel1 Model1 { get; set; }
public SomeDomainModel2 Model2 { get; set; }
...
}
这是错的.当我批评他们不使用视图模型时,他们会告诉我,告诉我:“Darin,看,我正在使用视图模型”,不幸的是,这不是视图模式应该如何工作.它们不是围绕域模型的包装器.
是的,您可以创建一个PersonViewModel,并且仅包含您的视图需要的属性. 或者如果您正在设计此视图模型的特定视图只需要一些属性,您也可以使其看起来像这样: public class MyViewModel
{
public string SomeExtraField1 { get; set; }
public string SomeExtraField2 { get; set; }
public string SomeExtraField3 { get; set; }
// this would be for example the concatenation of your domain model
// first name and last name as that's what this particular view needs to
// display
public string PersonFullName { set; set; }
}
就您的领域模型和视图模型而言,AutoMapper简单易用:优秀. (编辑:日照站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 有没有办法将内部控件放在ASP.NET自定义控件中?
- 在asp.net c#应用程序中使用Graphviz Dll
- asp.net-mvc – ASP.NET MVC Beta 1:DefaultModelBinder错
- 如何在asp.net应用程序中找到i / o瓶颈
- SimpleMembership与ASP.NET MVC 4中的自定义数据库模式
- asp.net – 在部分视图中强制使用没有Html.BeginForm / Aja
- asp.net-core – asp.net核心身份中的多个SubDomain的cooki
- asp.net-mvc-4 – 如何在asp.net MVC4查看页面中包含javasc
- asp.net-mvc – 为什么在ASP.NET MVC中使用lambdas而不是反
- asp.net – 如何从WCF客户端拦截raw soap request / respon
- asp.net-mvc – MicrosoftMvcValidation.js VS j
- asp.net – 在Application_BeginRequest中设置会
- asp.net-mvc – View中的意外NullReferenceExcep
- asp.net-mvc – 使用没有ORM的ASP.NET MVC
- asp.net-mvc-3 – 如何将复选框绑定到mvc3中的vi
- ASP.NET搜索引擎
- asp.net-mvc-4 – 带有TextBoxFor的MVC在循环中具
- IIS和ASP.Net Web开发服务器之间的行为差异?
- Phonegap上的ASP.NET窗体身份验证问题(Android)
- asp.net-identity – UseOAuthBearerTokens vs U
