使用 Html.RenderAction 将模型从视图传递到控制器会导致模型为空
Passing model from view to controller using Html.RenderAction results in model being null
我有以下型号:
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 获取包含多个列表的对象。这是因为如果在 list/s 中找不到项目,我需要隐藏操作。但是,当我再次使用@Html.RenderAction(...) 将它们传递给控制器时,当我期待一个列表时,我在控制器操作中得到了空值。为什么?
您必须将初始化的模型传递给控制器中的 Index
视图。
public ActionResult Index()
{
Foo model = GetFooFromSomewhere();
return PartialView("Index", model);
}
这样试试:
控制器:
public ActionResult Admins(List<Admin> m)
{
return PartialView("Admins", m);
}
查看:
@{Html.RenderAction("Admins", "Config", new { m = Model.Admins });}
我有以下型号:
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 获取包含多个列表的对象。这是因为如果在 list/s 中找不到项目,我需要隐藏操作。但是,当我再次使用@Html.RenderAction(...) 将它们传递给控制器时,当我期待一个列表时,我在控制器操作中得到了空值。为什么?
您必须将初始化的模型传递给控制器中的 Index
视图。
public ActionResult Index()
{
Foo model = GetFooFromSomewhere();
return PartialView("Index", model);
}
这样试试: 控制器:
public ActionResult Admins(List<Admin> m)
{
return PartialView("Admins", m);
}
查看:
@{Html.RenderAction("Admins", "Config", new { m = Model.Admins });}