我有一个场景,我不想将模型作为Ienumerable
列表传递
到Razor View。
public class School
{
public int ID { get; set; }
public string Name { get; set; }
public string Address { get; set; }
}
我需要传递模型,如下所示。
@model Doc.Web.Models.Common.School
不是
@model IEnumerable<Doc.Web.Models.Common.School>
所以,我在同一个模型
中对一个List进行了decalredpublic class School
{
public School()
{
lstSchool = new List<School>();
}
public int ID { get; set; }
public string Name { get; set; }
public string Address { get; set; }
public List<School> lstSchool { get; set; }
}
然后在控制器中
public ActionResult Index()
{
School model= new School();
SchoolRepository rep = new SchoolRepository();
model.lstSchool= rep.GetData();//Read list of schools from database
return View(model);
}
这是实现这个目标的正确方法吗?
答案 0 :(得分:8)
为什么要将@model Doc.Web.Models.Common.School
传递给视图?您需要在视图中使用“列表”的地方。
这是你可以尝试的东西......
类结构:创建一个SchoolList类
public class School
{
public int ID { get; set; }
public string Name { get; set; }
public string Address { get; set; }
}
public class SchoolList
{
public List<School> Schools { get; set; }
}
传递给视图:
@model Doc.Web.Models.Common.SchoolList
控制器:
public ActionResult Index()
{
SchoolList model= new SchoolList();
SchoolRepository rep = new SchoolRepository();
//Read list of schools from database
model.Schools = rep.GetData();
return View(model);
}
因此,您不需要将IEnumerable传递给视图并完成工作。