繁体   English   中英

查看模型Asp.Net MVC

[英]View Models Asp.Net MVC

使用MVC并将数据转换为ViewModels时,这是可接受的方式吗?

目前我正在使用AutoMapper执行此操作并且运行良好。 但是我确实在博客文章中看到了(我认为是Rob C)在ViewModel上有一个构造函数,它接受所需的参数数量,然后生成ViewModel

例如var RetViewModel = new ViewModel(MyObject);

这似乎是一种体面的做法,思想?

“公认的方式”通常是最适合您的方式。

我从来没有听说过AutoMapper,当我调查它时,我得到的是它通过遵循一定的约定创建了神奇的对象映射。

截屏时间: http ://www.dnrtv.com/default.aspx?showNum = 155

注意:我只观看了大约一半的截屏视频,所以我对AutoMapper的看法有​​点不完整。

我个人不想使用它,因为它要求我编写额外的代码来映​​射/“展平”对象属性(代码,IMO,最好留在构造函数逻辑中)。 在截屏视频示例中,该代码通常放在控制器的动作方法中,这会导致腹胀。(我喜欢瘦控制器/动作)

我使用你在帖子中给出的方法,让模型的构造函数接受一个对象并完成所有工作。

另外,我总是创建一个不带参数的空构造函数,这样我就可以手动设置ViewModel对象的属性值。

例:

CustomViewModel myModle = new CustomViewModle
{
    Property1 = "Something",
    Property2 = 3,
    //etc..
};

总而言之,尝试两种方式,看看哪些方法适合您。 AutoMapper是一个好主意,我可以看到它在许多情况下有所帮助,但是,我认为在使用它的某些时候,如果你要使用对象构造函数,你将使用它编写尽可能多的代码。

那么,“官方推荐”的方法是让模型绑定机制为您处理。 这更简单,并使过程自动化。 该模型必须将其属性公开为读写器,以便能够初始化它。

您正在讨论的第二个选项可能会使您的模型成为不可变对象。 也就是说,您将所有属性设置为只读,并通过构造函数参数初始化它们一次。 这将要求您直接查看FormCollection以提取提交的值。 这是更多的工作,但有其自身的优势,如作为一种防御性编程。

我不能说哪种方式更好,两种方式都是选择。 我个人现在更喜欢第二种风格。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM