如何在 ASP.NET MVC 控制器中使用 Automapper 配置

2024-02-23

我正在使用 AutoMapper 将模型转换为视图模型。我已经完成所有设置、测试和工作。作为参考,我的配置方法如下所示:

    public static MapperConfiguration Configure()
    {
            MapperConfiguration mapperConfiguration = new MapperConfiguration(cfg => {
                cfg.CreateMap<Ebill, EbillHarvesterTaskVM>()
                cfg.CreateMap<Note, NoteVM>();
                cfg.CreateMap<LoginItem, LoginCredentialVM>()
                cfg.CreateMap<Login, ProviderLoginVM>()
            });

            mapperConfiguration.CreateMapper();

            return mapperConfiguration;
     }

这就是我的测试的样子:

public void ValidConfigurationTest()
{
    var config = AutoMapperConfig.Configure();
    config.AssertConfigurationIsValid();
}

我不明白的是如何访问它以从我的控制器中实际将一个对象映射到另一个对象。我知道我可以在应用程序启动时调用此配置方法,我有一个从 global.asax 调用的应用程序配置类,它调用我的自动映射器配置方法。但我不确定如何从控制器内访问所有这些。我读过有关依赖注入的内容,但我不太熟悉这意味着什么,不知道如何应用它。

我过去使用过 Automapper,但我想我实现了现在不可用的静态 API。配置方法如下所示:

public static void RegisterMappings()
    {
        AutoMapper.Mapper.Initialize(cfg =>
        {
            cfg.CreateMap<ManagementCompany, ManagementCompanyViewModel>();
            cfg.CreateMap<ManagementCompanyViewModel, ManagementCompany>();

        });
    }

该配置在Global.asax中调用

AutoMapperConfig.RegisterMappings();

您可以在控制器中调用它来利用映射:

AutoMapper.Mapper.Map(managementCompany, managementCompanyVM);

这个方法已经不行了。当我输入 AutoMapper Mapper 时,没有要调用的 Map 方法。我需要做什么才能访问并使用我的映射?


public static MapperConfiguration Configure() {
        MapperConfiguration mapperConfiguration = new MapperConfiguration(cfg => {
            cfg.CreateMap<Ebill, EbillHarvesterTaskVM>()
            cfg.CreateMap<Note, NoteVM>();
            cfg.CreateMap<LoginItem, LoginCredentialVM>()
            cfg.CreateMap<Login, ProviderLoginVM>()
        });

        return mapperConfiguration;
 }

构建映射器并将其注册到应用程序使用的依赖项容器中。

全局.asax

MapperConfiguration config = AutoMapperConfig.Configure();;

//build the mapper
IMapper mapper = config.CreateMapper();

//..register mapper with the dependency container used by your application.

myContainer.Register<IMapper>(mapper); //...this is just an oversimplified example

更新控制器以通过构造函数注入显式依赖映射器

private readonly IMapper mapper;

public MyController(IMapper mapper, ...) {
    this.mapper = mapper;

    //...
}

并根据需要在控制器操作中调用映射器。

//...

Note model = mapper.Map<Note>(noteVM);

//...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 ASP.NET MVC 控制器中使用 Automapper 配置 的相关文章

  • 以相反的顺序迭代可变参数模板参数

    如果我手动反转传递给它的模板参数的顺序 以下代码将起作用 template
  • C 中的变量定义是什么意思[重复]

    这个问题在这里已经有答案了 你们能告诉我 这在 C 中意味着什么吗 define Privileged Data Privileged Data static int dVariable 编译器对变量进行寻址有特殊意义吗 这只是一个宏Pri
  • 必须打开存储才能执行此操作 - System.IO.Packaging.Package

    我正在使用 System IO Packaing Package 类来压缩文件 我的应用程序的多个实例可以同时运行 并读取和保存文件 当处理小文件时 一切似乎都很好 但是当涉及大文件时 如果应用程序的两个实例同时保存 我会收到一个异常 消息
  • SetWindowsHookEx 函数返回 NULL

    我正在研究 DLL 注入 但收到错误如下 挂接进程失败 87 参数不正确 目标进程和dll都是64位的 注入代码为 BOOL HookInjection TCHAR target TCHAR dll name https msdn micr
  • 没有 Unicode 字节顺序标记。无法切换到 Unicode

    我正在使用 XSD 编写 XML 验证器 下面是我所做的 但是当验证器到达该线时while list Read 它给了我错误 没有 Unicode 字节顺序标记 无法切换到 Unicode 有人可以帮我解决吗 public class Va
  • C# 中的协变和逆变

    首先我要说的是 我是一名正在学习 C 编程的 Java 开发人员 因此 我会将我所知道的与我正在学习的进行比较 我已经使用 C 泛型几个小时了 我已经能够在 C 中重现我在 Java 中知道的相同内容 除了几个使用协变和逆变的示例 我正在读
  • 使用不带参数的 Split() 时,默认分隔符是什么?

    所以我看了看String Split 今天 C 中的方法 我意识到你也可以向它传递零参数 这是我从未考虑过的 使用时默认的分隔符是什么Split 没有任何参数 如果没有值 则为空白 来源自here https msdn microsoft
  • 通过引用传递时取消引用指针

    当通过引用传递给函数时取消引用指针时会发生什么 这是一个简单的例子 int returnSame int example return example int main int inum 3 int pinum inum std cout
  • 为什么假设 send 可能返回的数据少于在阻塞套接字上传输的请求数据?

    在流套接字上发送数据的标准方法始终是调用 send 并写入一大块数据 检查返回值以查看是否发送了所有数据 然后再次调用 send 直到整个消息被接受 例如 这是一个常见方案的简单示例 int send all int sock unsign
  • C 中的模仿函数重写

    具体来说 函数重写能够调用基本重写方法 这有两部分 一个是预编译的库代码 1 另一个是库的用户代码 2 我在这里实现了一个尽可能最小的经典 Person 和 Employee 示例 非常感谢了解 OOP 概念的铁杆 C 开发人员的回应 我正
  • .net Framework (.net 4.0) 中定义 Base 3 数字的类

    我正在寻找一些可以用来定义 3 基数 三进制数 的类 有什么我可以在 net 框架中使用的东西或者我需要写一些东西吗 谢谢你的帮助 您可以使用解析Convert ToInt32 s base http msdn microsoft com
  • Microsoft.Graph - 如何从具有不同用户名的共享邮箱发送?

    我目前正在将使用 SMTP 的服务代码移植到 Office 365 通过 SMTP 我可以使用 发件人 字段在来自共享收件箱的邮件上设置不同的用户名 同时保留共享电子邮箱地址 这似乎无法通过 Office 365 运行 其工艺流程为 客户填
  • 为什么重载方法在 ref 仅符合 CLS 方面有所不同

    公共语言规范对方法重载非常严格 仅允许根据其参数的数量和类型来重载方法 如果是泛型方法 则根据其泛型参数的数量进行重载 根据 csc 为什么此代码符合 CLS 无 CS3006 警告 using System assembly CLSCom
  • 从包含大量文件的目录中检索文件

    我的目录包含近 14 000 000 个 wav 格式的音频样本 所有普通存储 没有子目录 我想循环浏览文件 但是当我使用DirectoryInfo GetFiles 在该文件夹上 整个应用程序冻结了几分钟 可以用另一种方式完成吗 也许读取
  • 为什么WCF中不允许方法重载?

    假设这是一个ServiceContract ServiceContract public interface MyService OperationContract int Sum int x int y OperationContract
  • 是什么原因导致 Linq 错误:此方法无法转换为存储表达式?

    我有一堆具有相同 select 语句的 Linq to Entity 方法 所以我想我会很聪明 并将其分离到它自己的方法中以减少冗余 但是当我尝试运行代码时 我得到了以下内容错误 该方法不能转化为 商店表达式 这是我创建的方法 public
  • C++ 标准中短语“构造函数没有名称”的含义

    在尝试理解 C 标准中的 构造函数没有名称 这句话时 我似乎在 clang 中发现了一个错误 有人可以证实这一点吗 VS2015 and gcc rejects this code and I think they it are is co
  • 你能解释一下这个C++删除问题吗?

    我有以下代码 std string F WideString ws GetMyWideString std string ret StringUtils ConvertWideStringToUTF8 ws ret return ret W
  • 将文本从文本文件添加到 PDF 文件[重复]

    这个问题在这里已经有答案了 这是我的代码 using FileStream msReport new FileStream pdfPath FileMode Create step 1 using Document pdfDoc new D
  • 使用剪贴板 SetText 换行

    如何使用 SetText 方法添加换行符 I tried Clipboard SetText eee n xxxx 但当我将剪贴板数据粘贴到记事本中时 它没有给我预期的结果 预期结果 eee xxxx 我怎样才能做到这一点 Windows

随机推荐

  • 将脚注添加到 gsummary 表中的单行标签

    我正在尝试向行标签添加脚注gtsummary https www danieldsjoberg com gtsummary 表 但我不知道如何引用我想要的确切单元格 预期输出 使用默认值trial数据集 我想在 药物 B 中添加一个脚注 内
  • Json 序列化将 k__BackingField 添加到我的属性中

    这种情况最近才开始发生在未更改的代码上 它是 nuget 包中的外部库 如果我这样做 var client HttpClient var response await client PostAsJsonAsync some url some
  • 启动进程并允许调用者结束而无需等待进程完成

    我需要从 C 控制台应用程序启动一个进程 然后允许控制台应用程序完成 结束 而无需等待进程 线程完成 我该怎么做呢 您需要避免使新进程成为当前进程的子进程 ProcessStartInfo sinfo new ProcessStartInf
  • 如果页面有 session_start(),则不会加载;在里面

    我最近从多年的 WAMP 切换到 XAMPP 因为我想要 PHP 7 但我注意到一些我以前从未经历过的事情 它不会加载具有以下内容的 php 文件 session start 在他们中 我只是在 Chrome IE FF 中收到 正在等待本
  • 来自 DataProvider 的 Yii 分页变量

    我的控制器操作中需要某些分页变量 such as 1 当前页码 2 当前页偏移量 3 显示总记录数 即显示 2005 年的 31 至 40 条记录 我尝试了以下方法 dataProvider NodesTerms getNodesDataF
  • Docker 按顺序下载各层

    有没有办法让 docker 按顺序而不是并行下载图像的各层 我之所以需要这个 是因为我们的存储库对网络问题非常严格 或狡猾 我收到很多 EOF 错误 例如 time 2016 06 14T13 15 52 936846635Z level
  • Web API 中的命名空间“System.Web”中不存在类型或命名空间“Http”

    我正在尝试按照此链接创建一个 Web API 我已经完全添加了它的显示方式this https www tutorialspoint com asp net mvc asp net mvc web api htm文章 但是添加控制器后 它给
  • 根据值向网格图添加边框

    我想知道你是否能帮我解决这个问题 我有一个由 0 和 1 组成的网格 如果它是 1 我想向绘图单元格区域添加边框颜色 我使用 imshow 生成根据值着色的网格 例如 a np random randint 2 size 10 10 im
  • Yarn 迷你集群容器日志目录不包含 syslog 文件

    我已经基于 CDH 5 1 0 的 hadoop 2 3 0 设置了带有 1 个节点管理器 4 个本地目录和 4 个日志目录等的 YARN MapReduce 迷你集群 它看起来或多或少起作用 我未能实现的是从容器进行系统日志记录 我看到容
  • 为什么 wget 输出到 stderr 而不是 stdout?

    经过 30 分钟徒劳尝试捕获输出后wget 我发现该程序写入stderr而不是stdout 在网络和堆栈溢出中搜索表明这是一个众所周知的事实 知道为什么会这样吗 这是众所周知的 因为它在manual http www gnu org sof
  • PHP 组合数组

    我如何组合这两个数组 如果数组有重复项 则只有一个使用 PHP 表示 Array 0 gt 18 1 gt 20 2 gt 28 3 gt 29 Array 0 gt 1 1 gt 8 2 gt 19 3 gt 22 4 gt 25 5 g
  • 如何对不描述函数的 N 个点进行插值

    Suppose i have n points also suppose that this points have an order and not necessary this points make a function I m wo
  • JavaFX ContextMenu 加速器从错误的选项卡触发

    我有一个TabPane有两个选项卡 每个选项卡都有一个TableView它有一个上下文菜单 这两个上下文菜单有重复的加速器 但我希望只有当前选定的选项卡才会响应 但发生的只是最后添加的Tab似乎得到了该事件 即使它没有被选择 下面是完整的示
  • 从子文件夹提供 React 应用程序时出错

    我正在尝试从子文件夹提供 React 应用程序 目前它是一个非常简单的 SPA 运行在根 URL 上 例如http 我的服务器 3000 http myserver 3000 并且我想从子文件夹中提供它 例如http myserver 30
  • 在仅包含值类型的自定义结构上使用 Marshal.SizeOf() 方法

    我创建了一个由两种值类型组成的简单结构 public struct Identifier public Guid ID get set public Byte RequestType get set 然后我打电话Marshal SizeOf
  • Django 中的 URL 正则表达式,具有有限的单词集

    给定以下 django URL conf 入口 url r P
  • 查找 2D 数组/矩阵中 k 个最高值的索引

    我有一个包含值的 2D 矩阵 我想找到前 5 个值的索引 例如对于 matrix 0 17542851 0 13199346 0 01579704 0 01429822 0 01302919 0 13279703 0 12444886 0
  • 自动完成jquery和SQL,ASP.NET

    我正在尝试使用 jquery 创建一个自动完成文本框 它将绑定到 SQL 数据库 我还想在页面上放置一个下拉列表 以便根据初始选择自动完成文本框将从不同的表中检索数据 这是一个 ASP NET 2 0 页面 背后的代码是 VB NET 我有
  • Swift:可选下标的可选链接

    我有一个let map String String and a let key String 最简洁的访问方式是什么map key 并取回String 如果我有一个key and None如果我没有 let value key flatMa
  • 如何在 ASP.NET MVC 控制器中使用 Automapper 配置

    我正在使用 AutoMapper 将模型转换为视图模型 我已经完成所有设置 测试和工作 作为参考 我的配置方法如下所示 public static MapperConfiguration Configure MapperConfigurat