2015-05-24 30 views

回答

6

IEnumerable<Entity>作爲模型的剃刀視圖意味着一組對象(例如視圖模型或實體)作爲模型傳遞給控制器​​的頁面。例如

@model IEnumerable<MyNamespace.Entity> 

將匹配的控制器操作,如

[HttpGet] 
public ActionResult SearchByName(string startsWith) 
{ 
    var entities = Db.Entities 
     .Where(e => e.StartsWith(startsWith)) 
     .ToList(); 
    return View(entities); 
} 

這樣的觀點將有機會獲得多重Entity對象(例如,有問題的頁面可能是一個IndexSearch result頁,其中的條目可能以表格形式列出,其中foreach

相比之下,將單個對象作爲模型的剃刀視圖僅顯示一個對象,例如

@model MyNamespace.Entity 

將從控制器動作中使用諸如

[HttpGet] 
public ActionResult Details(int id) 
{ 
    var entity = Db.Entities.Find(id); 
    if (entity == null) 
     return HttpNotFound(); 
    return View(entity); 
} 

就是說視圖具有單個Entity模型受試者,例如該頁面可能會顯示一個Entity對象的詳細信息,或允許更新或僅插入一個Entity

可用於頁面的相應Model實例對象將是@model的相應類型。

另外一點需要注意的是,IEnumerable也表示不變性,即視圖應該讀取集合,但可能不是例如。 AddDelete個實體(即離開腳手架IEnumerable並且不將其改變爲例如IListICollection)的良好做法。

+0

非常感謝 – Dave