MVC中,如果想在Domain Model和View Model之间建立映射,用AutoMapper是一个不错的选择.不仅如此,AutoMapper能在不同对象之间建立映射,比如string与int类型, DateTime与int类型,接口与实现类,等等.本篇主要总结AutoMapper在MVC中的配置.使用.单元测试,以及各种映射场景. 注意: 如果通过NuGet下载最新版的AutoMapper,需要注意的是:有些方法,比如ForMember方法,和以前不一样.还有一些方法已经过期. 配置 □…
配置.单元测试.AOP注入 Decimal转换成String类型 源数组转换成目标数组 源中的集合(数组)属性转换成目标中的集合(数组)属性 子类父类间的映射 源字典集合转换成目标字典集合 枚举映射 自定义解析器 源中的复杂属性和Get...方法转换成目标属性 类型转换,源string类型分别转换成int, DateTime,Type 源和目标都包含复杂类型属性 把源中的一个属性映射到目标中的多个属性 动态实现接口方法或属性 目标中的属性如果比源多,可以忽略多出的属性 目标有virtual属性,…
返回JsonResult是MVC中的常见返回值类型,而且简单方便的方式是结合匿名类型一起使用. 比如: public ActionResult PreviewEmail() { …… return Json(new { HtmlContent = htmlContent, Title = title }, JsonRequestBehavior.AllowGet); } 下面讨论一下,针对这个函数,如何单元测试. ExposedObject可以通过Nuget下载安装,介绍中已经说明了它的主要用处…
本文参考了Taswar Bhatti的博客,他写了<Instant AutoMapper>这本书.遗憾的是,这本电子版书在国内还买不到,也下载不到.也只能从他的有限几篇博文中来窥探一二了. 本文模拟了一个关于订单的应用场景,涉及到的方面包括: ※ 显示所有订单 ※ 显示客户信息 ※ 显示订单,但不显示view model OrderDto中的集合导航属性 ※ 把源中的DateTime类型转换成int类型 ※ 把源中的bool类型转换成string类型 ※ 把源中的集合导航属性IEnumerab…
本篇AutoMapper使用场景: ※ 动态实现接口方法或属性 ※ 目标中的属性如果比源多,可以忽略多出的属性 ※ 目标有virtual属性,可忽略 ※ 目标属性值为null的解决办法 ※ int转string ※ bool转string ※ DateTime转String ※ 判断条件 动态实现接口方法或属性 public interface ICreateOrderMessage { string CustomerName { get; set; } } □ 使用 public Action…
本篇AutoMapper使用场景: ※ 类型转换,源string类型分别转换成int, DateTime,Type ※ 源和目标都包含复杂类型属性 ※ 把源中的一个属性映射到目标中的多个属性 类型转换,源string类型分别转换成int, DateTime,Type □ Domain model public class Source2 { public string Value1 { get; set; } public string Value2 { get; set; } public s…
本篇AutoMapper使用场景: ※ 源字典集合转换成目标字典集合 ※ 枚举映射 ※ 自定义解析器 ※ 源中的复杂属性和Get...方法转换成目标属性 源字典集合转换成目标字典集合 □ Domain model public class SourceValue { public int Value { get; set; } } □ View model public class DestValue { public int Value { get; set; } } □ 映射配置 Mappe…
本篇AutoMapper使用场景: ※ Decimal转换成String类型 ※ 源数组转换成目标数组 ※ 源中的集合(数组)属性转换成目标中的集合(数组)属性 ※ 子类父类间的映射 Decimal转换成String类型 □ Domain model public class Order { public decimal Amount { get; set; } } □ View  model public class OrderListViewModel { public string Amo…
log4j和web.xml配置webAppRootKey 的问题 1 在web.xml配置 <context-param>  <param-name>webAppRootKey</param-name>  <param-value>web.sample.root</param-value></context-param> 可以用System.getProperty("web.sample.root")来获取属性值.…
public void Configuration(IAppBuilder app)       {           ConfigureAuth(app);           //指定使用Sqlserver进行定时任务的持久化           GlobalConfiguration.Configuration.UseSqlServerStorage("conn");           //启用服务           app.UseHangfireServer();    …