我有一个DTO和一个ViewModel
Bot具有与Price相同的属性,如下所示:
public Nullable<decimal> Price
{
get;
set;
}
在我的POST ActionResult中,当tryig保存到db时我有......
Mapper.CreateMap<ListingFormModel, Listing>()
var newListing = Mapper.Map<ListingFormModel, Listing>(m);
_listingRepository.Add(newListing);
我得到的错误: 无法将类型为“System.Decimal”的对象强制转换为“System.String”。
我刚刚开始使用automapper,就在今天,所以我很困惑为什么相同的类型没有正确映射?在浏览自动播放器文档时,我看到了以下示例:
.ForMember(dest => typeof(decimal?), src => src.ResolveUsing<MyDecimalResolver>());
但是如果我从一开始就没有做某事,我不知道为什么我需要制作一个解析器?有什么建议吗?
完整代码:
public class ListingFormModel
{
[Required]
public int ListingID
{
get;
set;
}
.....
[Required]
[RegularExpression("([0-9]+)", ErrorMessage="Asking Price must be numbers only. Example: For $125,000 enter 125000")] //for 0-inf or
[Display(Name = "Asking Price")]
[StringLength(10, ErrorMessage = "Asking Price must be numbers only and may not exceed 10 characters. Example: For $1,500,000 enter 1500000")]
public Nullable<decimal> Price
{
get;
set;
}
.....
在我的xxxx.Common项目中的DTO / POCO: 命名空间LOTW2012.Common { public partial class Listing { #region原始属性
public virtual int ListingID
{
get;
set;
}
......
public virtual Nullable<decimal> Price
{
get;
set;
}
.....
然后xxxx.Web项目中的CONTROLLER:
[HttpPost]
[ValidateAntiForgeryTokenWrapper(HttpVerbs.Post)]
public ActionResult Create(ListingFormModel m)
{
try
{
if (ModelState.IsValid && SecurityHelper.ReferrerIsValid)
{
Mapper.CreateMap<ListingFormModel, Listing>()
// .ForMember(dest => dest.Price, opt => opt.ResolveUsing<NullableDecimalResolver>());
var newListing = Mapper.Map<ListingFormModel, Listing>(m);
_listingRepository.Add(newListing);
return RedirectToAction("Index");
}
else
{
return View();
}
}
catch
{
return View();
}
}