0

我有这个发布方法:

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

4

2 回答 2

3

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

 return View("yourviewname",newErrorModel);
于 2012-06-11T11:55:09.070 回答
2

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

您应该将两个视图模型类(SuperInvitationsEditModelSuperInvitationsErrorModel)合并为一个,或者为它们中的每一个创建一个独立的视图。

于 2012-06-11T11:54:03.390 回答