【问题标题】:Complex Model updating in form posting scenarios and MVC表单发布场景和 MVC 中的复杂模型更新
【发布时间】:2009-10-16 08:25:08
【问题描述】:

很多人都写过关于使用 Automapper 将域对象(模型)映射到视图模型的文章,我觉得这非常有趣和有用,但我的问题是如何反其道而行之。我了解这个过程的复杂性以及为什么 Automapper 在这种情况下不起作用,但我必须在表单发布方面做很多事情,特别是在更新时。

我有一个模型,我将它映射到一个视图模型,然后我向用户呈现一个表单。然后,表单被发布,由于模型可能非常复杂,我使用自定义 ModelBinders 来处理响应并构建一个不会直接持久化的新模型。相反,我从数据库加载原始模型并调用一个方法从发布的更新它而不破坏任何东西。但这会变得重复,也许有更好的方法。

我见过的示例非常有限且幼稚,但在我们的应用程序中,我们现在可能有 50 多个类似这样的表单发布场景,并且还在不断增加。

【问题讨论】:

    标签: asp.net-mvc forms automapper


    【解决方案1】:

    如果你想去另一个方向,首先创建另一个方向的地图,Mapper.Map()

    接下来,您可能想要创建类型转换器 (Mapper.CreateMap().ConvertUsing()),因为有时表单可以是更多...字符串。

    然后,您可能需要忽略或使用目标值。可以使用 ForMember(entity => entity.Id, opt => opt.Ignore()) 或 ForMember(entity => entity.ChildCollection, opt => opt.UseDestinationValue()) 进行配置。

    最后,您需要使用采用现有目标对象 Mapper.Map(dto, entity) 的重载。

    【讨论】:

    • 我并不是说只使用 Automapper,但感谢您的热烈响应,我会尽快尝试。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-16
    • 2011-07-17
    相关资源
    最近更新 更多