所以到处都发现使用视图模型更好。它说它会阻止我使用'spegetti代码',好吧我喜欢它。
我不认为对每个视图模型重复我的验证是个好主意,所以我找到了automapper,我正在尝试这个,但它不起作用我做错了什么?
感谢
[HttpPost]
public ActionResult AddProvider(ProviderNewVM providerVM)
{
Provider provider = Mapper.Map<Provider>(providerVM);
UpdateModel(provider);
if (ModelState.IsValid)
{
return Content("ok");
}
return Content("nope");
}
我的模特:
public class Provider
{
public int Id { get; set; }
[Required]
public string Name { get; set; }
public string Phone { get; set; }
public string Email { get; set; }
}
我的视图模型:
public class ProviderNewVM
{
public string Name { get; set; }
public string Phone { get; set; }
public string Email { get; set; }
}
我正在尝试从我的视图中恢复ProviderNewVM类,并将我的控制器中的模型转换为Provider类,以便我可以使用模型验证进行验证。
Sory,我收到错误(“Controli_web.Models.Provider”类型的模型无法更新)
UpdateModel(provider);
然后我将该行更改为:
TryUpdateModel(provider);
并且模型始终有效
答案 0 :(得分:0)
在AddProvider操作中尝试此操作:
[HttpPost]
public ActionResult AddProvider(ProviderNewVM providerVM)
{
Mapper.CreateMap<ProviderNewVM , Provider>();
Provider provider = Mapper.Map<ProviderNewVM,Provider>(providerVM);
UpdateModel(provider);
if (ModelState.IsValid)
{
return Content("ok");
}
return Content("nope");
}