I have a scenario where I don't want to pass a model as an Ienumerable
list
to the Razor View.
public class School
{
public int ID { get; set; }
public string Name { get; set; }
public string Address { get; set; }
}
I need to pass the model to view as below.
@model Doc.Web.Models.Common.School
not as
@model IEnumerable<Doc.Web.Models.Common.School>
So, I decalred a List inside the same Model
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; }
}
Then in the controller
public ActionResult Index()
{
School model= new School();
SchoolRepository rep = new SchoolRepository();
model.lstSchool= rep.GetData();//Read list of schools from database
return View(model);
}
is this the proper way to achieve this?
Why do you want to pass @model Doc.Web.Models.Common.School
to the view ? where you need a "list" on your view.
Here is something you can try...
Class structure : Create a SchoolList class
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; }
}
Pass to view :
@model Doc.Web.Models.Common.SchoolList
Controller :
public ActionResult Index()
{
SchoolList model= new SchoolList();
SchoolRepository rep = new SchoolRepository();
//Read list of schools from database
model.Schools = rep.GetData();
return View(model);
}
So this way you don't need to pass an IEnumerable to the view and get the job done.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With