在模型中声明列表

cha*_*ara 3 c# asp.net asp.net-mvc razor asp.net-mvc-4

我有一个场景,我不想将模型作为Ienumerable列表传递给Razor View.

public class School
{
   public int ID { get; set; }
   public string Name { get; set; }
   public string Address { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我需要传递模型以查看如下.

@model Doc.Web.Models.Common.School
Run Code Online (Sandbox Code Playgroud)

不是

@model IEnumerable<Doc.Web.Models.Common.School>
Run Code Online (Sandbox Code Playgroud)

所以,我在同一个模型中对一个List进行了decalred

public 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; }
}
Run Code Online (Sandbox Code Playgroud)

然后在控制器中

public ActionResult Index()
{
   School model= new School();
   SchoolRepository rep = new SchoolRepository();
   model.lstSchool= rep.GetData();//Read list of schools from database
   return View(model);
}
Run Code Online (Sandbox Code Playgroud)

这是实现这个目标的正确方法吗?

Yas*_*ser 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; }
}
Run Code Online (Sandbox Code Playgroud)

传递给视图:

@model Doc.Web.Models.Common.SchoolList
Run Code Online (Sandbox Code Playgroud)

控制器:

public ActionResult Index()
{
    SchoolList model= new SchoolList();
    SchoolRepository rep = new SchoolRepository();

    //Read list of schools from database
    model.Schools = rep.GetData(); 

    return View(model);
}
Run Code Online (Sandbox Code Playgroud)

因此,这样您就不需要将IEnumerable传递给视图并完成工作.