从另一个控制器渲染视图时,不正确的模型项传递到字典中

时间:2017-10-07 12:08:46

标签: c# asp.net-mvc

当我登录用户访问他们的个人资料小瓶Manage - > Index.cshtml,我想向他们展示他们所属的组织所做的所有订单。

这些订单通常显示在组织的Details.cshtml

@{Html.RenderAction("Index", "Order", new { org = Model });}

其中model包含ViewOrganisationViewModel,其中存储了所有订单。

这很有效。

现在,当我想为登录用户执行相同操作时,我尝试了:

管理Index.html

@{Html.RenderAction("MyIndex", "Order");}

OrderController.cs

我在这里添加了MyIndex方法,该方法首先获取用户OrganisationId以构建正确的ViewOrganisationViewModel。整个方法运行没有错误。

public ActionResult Index(ViewOrganisationViewModel org)
{
    return PartialView(org.Orders);
}

public ActionResult MyIndex()
{
    Models.ApplicationUser user =
        System.Web.HttpContext.Current.GetOwinContext()
            .GetUserManager<ApplicationUserManager>()
            .FindById(System.Web.HttpContext.Current.User.Identity.GetUserId());

    var organisationManager = new OrganisationManager();
    var org = organisationManager.Select(user.OrganisationId);

    return View("Index", org);
}

现在,当应用程序尝试返回Index(ViewOrganisationViewMode org)时,我得到:

  

传递到字典中的模型项是'AuroraWeb.ViewOrganisationViewModel'类型,但是这个字典需要一个类型为'System.Collections.Generic.IEnumerable`1 [AuroraWeb.ViewOrderViewModel]'的模型项。

为什么这样做?该方法期望ViewModel的IEnumerable,所以我在这里遗漏了什么?

我也尝试将return中的MyIndex行更改为

return Index(org);

但它然后抱怨没有MyIndex.cshtml视图(没有,因为我只需要返回Index视图..)

我也试过

return RedirectToAction("Index", new { org = org });

但得到了

  

不允许子操作执行重定向操作。

如果我能提供任何额外的细节,请告诉我。

0 个答案:

没有答案