2014-03-26 59 views
2

我有一個場景,我不想將模型作爲Ienumerable列表 傳遞給Razor視圖。在模型中聲明列表

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> 

所以,我在控制器

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

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; } 
} 

那麼這就是正確的方法做到這一點?

+0

爲什麼學校會有學校名單?像父子層次一樣? –

+0

正式它是正確的,但在語義上你可能有問題。你現在的'學校'班級模型是什麼? – Andrei

+0

這很好。您必須在您的視圖中使用Model.lstSchool來枚舉值的列表以獲取值。 – Oasis

回答

7

爲什麼你想通過@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傳遞給視圖,並把工作做好。