从Post方法返回一个视图

时间:2012-06-11 11:45:30

标签: asp.net-mvc-3

我有这个帖子方法:

    [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。谁能告诉我为什么这不起作用?

2 个答案:

答案 0 :(得分:3)

因为您当前的视图是强类型的。将代码更改为

 return View("yourviewname",newErrorModel);

答案 1 :(得分:2)

与将 ViewResult 转换为 ActionResult 无关。问题是,您有强类型视图,需要SuperInvitationsEditModel类型的模型(请参阅 Invitations.cshtml 顶部的@model),但您传递的是模型类型为SuperInvitationsErrorModel

您应该将两个视图模型类( SuperInvitationsEditModel SuperInvitationsErrorModel )合并为一个,或者为每个视图模型类创建一个独立视图。