我有以下型号:
public class Foo
{
public List<Employee> Employees{ get; set; }
public List<Company> Companies{ get; set; }
public List<Admin> Admins{ get; set; }
}
然后我有我的控制器动作:
public ActionResult Index()
{
Foo model = GetFooFromSomewhere();
return PartialView("Index", model);
}
public ActionResult Employees(List<Employee> model)
{
return PartialView("Employees", model);
}
public ActionResult Companies(List<Company> model)
{
return PartialView("Companies", model);
}
public ActionResult Admins(List<Admin> model)
{
return PartialView("Admins", model);
}
然后我有我的观点
Index.cshml:
@model Foo
@if(Model.Employees.Count > 0)
{
@{Html.RenderAction("Employees", "Config", Model.Employees);}
}
@if(Model.Companies.Count > 0)
{
@{Html.RenderAction("Companies", "Config", Model.Companies);}
}
@if(Model.Admins.Count > 0)
{
@{Html.RenderAction("Admins", "Config", Model.Admins);}
}
Employees.cshtml:
@model List<Employee>
//Display model here
Companies.cshtml
@model List<Company>
//Display model here
Admins.cshtml
@model List<Admin>
//Display model here
如您所见,我使用Index.cshtml来获取包含多个列表的对象。这是因为如果列表中没有找到任何项目,我需要隐藏操作。但是,当我使用@ Html.RenderAction(...)再次将它们传递给控制器时,当我期待List时,我在控制器操作中得到null。为什么呢?
答案 0 :(得分:3)
尝试这种方式: 的控制器:强>
public ActionResult Admins(List<Admin> m)
{
return PartialView("Admins", m);
}
查看:强>
@{Html.RenderAction("Admins", "Config", new { m = Model.Admins });}
答案 1 :(得分:1)
您必须将初始化的模型传递给控制器中的Index
视图。
public ActionResult Index()
{
Foo model = GetFooFromSomewhere();
return PartialView("Index", model);
}