当我登录用户访问他们的个人资料小瓶Manage
- > Index.cshtml
,我想向他们展示他们所属的组织所做的所有订单。
这些订单通常显示在组织的Details.cshtml
@{Html.RenderAction("Index", "Order", new { org = Model });}
其中model
包含ViewOrganisationViewModel
,其中存储了所有订单。
这很有效。
现在,当我想为登录用户执行相同操作时,我尝试了:
@{Html.RenderAction("MyIndex", "Order");}
我在这里添加了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 });
但得到了
不允许子操作执行重定向操作。
如果我能提供任何额外的细节,请告诉我。