2
我有三个viewmodels编辑相同的域对象。 我使用AutoMapper从域对象映射到视图模型。对多个视图模型使用相同的actionresult方法?
GET
if (Roles.IsUserInRole("administrators"))
{
viewName = "EditAdmin";
editOrder = Mapper.Map<Order, ViewModels.Order.Admin_ViewModel>(order);
}
else if (Roles.IsUserInRole("administrators"))
{
viewName = "EditTechnician";
editOrder = Mapper.Map<Order, ViewModels.Order.Technician_ViewModel>(order);
}
else if (Roles.IsUserInRole("clients"))
{
viewName = "EditClient";
editOrder = Mapper.Map<Order, ViewModels.Order.Client_ViewModel>(order);
}
RedirectToRoute(viewName, editOrder);
POST 是否可以用于所有的ViewModels同样的方法? 可能通过让ViewModel继承“ViewModelbase”? 没有成功:(
提前感谢试过这种
编辑:! 这就是我的方法貌似现在:
public ActionResult EditAdmin(ViewModels.Order.Admin_ViewModel model) {...}
任何想法
更新: 我无法理解如何使用组合(尝试了几个小时),所以我用它来清理一下,这些是处理程序我的三个的ViewModels:
[HttpPost]
[Authorize(Roles = "administrators")]
public ActionResult EditAdmin(Admin_ViewModel model)
{
return SaveViewModel(model);
}
[HttpPost]
[Authorize(Roles = "technicians")]
public ActionResult EditTechnician(Technician_ViewModel model)
{
return SaveViewModel(model);
}
[HttpPost]
[Authorize(Roles = "clients")]
public ActionResult EditClient(Client_ViewModel model)
{
return SaveViewModel(model);
}
SaveViewModel看起来是这样的:
protected ActionResult SaveViewModel(dynamic model)
{ ... }
我不觉得好这个解决方案。你能给我一些指点吗?
请参阅上面的我的更新。谢谢! –
@JimH请你分享三个ViewModels,然后我可以试一试。 – Rajeesh