我有这个帖子方法:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Invitations(SuperInvitationsEditModel model)
{
...
var newmodel = new SuperInvitationsEditModel();
if (hasErrors)
{
SuperInvitationsErrorModel newErrorModel = new SuperInvitationsErrorModel();
newErrorModel.Errors = model.Errors;
return View(newErrorModel);
}
return View(newmodel);
}
当if(hasErrors)中的代码执行时,我收到此错误。
The model item passed into the dictionary is of type 'MyProject.Models.SuperInvitationsErrorModel', but this dictionary requires a model item of type 'MyProject.Models.SuperInvitationsEditModel'.
我认为我可以这样做,因为该方法的返回值是一般的ActionResult。谁能告诉我为什么这不起作用?
答案 0 :(得分:3)
因为您当前的视图是强类型的。将代码更改为
return View("yourviewname",newErrorModel);
答案 1 :(得分:2)
与将 ViewResult 转换为 ActionResult 无关。问题是,您有强类型视图,需要SuperInvitationsEditModel
类型的模型(请参阅 Invitations.cshtml 顶部的@model
),但您传递的是模型类型为SuperInvitationsErrorModel
。
您应该将两个视图模型类( SuperInvitationsEditModel 和 SuperInvitationsErrorModel )合并为一个,或者为每个视图模型类创建一个独立视图。