如何使用 Automapper 将两个不同的类映射到一个 ViewModel 中?

发布于 2025-01-07 14:04:22 字数 578 浏览 4 评论 0原文

我正在使用 C# 和 Razor 开发 ASP.NET MVC3 应用程序。应用程序的架构分为数据访问层(EF 类 + 存储库)、服务层、控制器、视图模型和视图。

在控制器中,我从服务层获取:

  1. 从方法Product GetProduct(id),一个Product对象,其中包含有关要显示的产品的所有信息在视图中

  2. 从方法 Filter GetFilter()Filter 对象,包含用于搜索过滤器的所有信息,例如从下拉列表中选择的产品列表等...

现在,如果我使用 AutoMapper,我该如何映射这些信息在 SelectProductViewModel 类中?

public class SelectProductViewModel
{
    public Product ProductToDisplay { get; set; }
    public Filter SearchFilter { get; set; }
}

I am developing an ASP.NET MVC3 application in C# and Razor. The architecture of the application is divided in Data Access Layer (EF classes + Repository), Service Layer, Controller, ViewModels and View.

In the controller I obtain from my Service Layer:

  1. From the method Product GetProduct(id), a Product object which contains all the information about a product to be displayed in the View

  2. From the method Filter GetFilter() a Filter object that contains all the info that are used for the search filter such list of products to be chosen from a dropdownlist, etc...

Now if I use AutoMapper how can I map these information in a SelectProductViewModel class?

public class SelectProductViewModel
{
    public Product ProductToDisplay { get; set; }
    public Filter SearchFilter { get; set; }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

胡渣熟男 2025-01-14 14:04:22

AutoMapper 用于在单个源类型到单个目标类型之间进行映射。您不能在这种情况下使用它。所以它可以很简单:

var model = new SelectProductViewModel
{
    ProductToDisplay = service.GetProduct(id),
    SearchFilter = service.GetFilter()
};

AutoMapper is used to map between a single source type to a single destination type. You cannot use it in this context. So it could be as simple as:

var model = new SelectProductViewModel
{
    ProductToDisplay = service.GetProduct(id),
    SearchFilter = service.GetFilter()
};
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文