视图模型Asp.Net MVC
-
22-07-2019 - |
题
当使用MVC和您的数据转换成的ViewModels这是做到这一点的接受的方式?
目前我使用AutoMapper做到这一点,它的运作良好。但是我没有看到在具有上视图模型构造这需要需要则params的数目的博客文章(我认为这是罗布C),然后生成视图模型
例如var RetViewModel = new ViewModel(MyObject);
这似乎是在做一个体面的方式吧,想法吗?
解决方案
在“接受的方式”一般是最适合你的方式。
我从来没有听说过AutoMapper的,当我看着它,我得到了什么是它按照一定的约定产生神奇的对象映射。
截屏于: http://www.dnrtv.com/default.aspx? showNum = 155
请注意:我只看过有关截屏的一半,所以我对AutoMapper的想法是有些不完整
我个人不希望使用它,因为它要求我写额外的代码映射/对象属性(代码,国际海事组织,在构造逻辑更好左)之间的“扁平化”。在截屏示例,该代码通常放置在一控制器,其可导致腹胀的作用的方法。(我喜欢瘦控制器/动作)
我用您在您的文章给了方法,具有模型的构造需要一个对象,并完成所有的工作。
此外,我总是创建一个空的构造不带参数,这样我可以手动设置视图模型对象的属性值。
示例:
CustomViewModel myModle = new CustomViewModle
{
Property1 = "Something",
Property2 = 3,
//etc..
};
要总结,尝试两种方式,看看你的作品。 AutoMapper是一个伟大的想法,我可以看到它帮助在许多情况下,但是,我认为在某些点上,当你使用它,你会使用它,如果你使用对象构造函数来编写大量代码。
其他提示
那么,“官方推荐”的办法是让模型绑定机制处理,对你。这是简单和自动化的过程。该模型将具有以暴露其属性是读写用于粘合剂,以便能够对其进行初始化。
你在谈论可能会采取让你的模型不可变对象利益的第二个选项。也就是说,你让所有的属性为只读,并通过构造函数的参数,一旦对它们进行初始化。这就要求你考虑的FormCollection直接拔出提交的值。即更多的工作,但有像被一种类型的防御性编程的其自身的优点。
我不能说哪种方式更好,两者的选择。我个人比较喜欢第二种风格现在。