我看到有些人在他們認爲的最上方註明@model IEnumerable<WebApplication1.Models.Weight>
有的寫@model WebApplication1.Models.Weight
剃刀視圖之間的區別IEnumerable <Model>與模型?
我想知道both.Like之間的區別時,使用什麼?
我看到有些人在他們認爲的最上方註明@model IEnumerable<WebApplication1.Models.Weight>
有的寫@model WebApplication1.Models.Weight
剃刀視圖之間的區別IEnumerable <Model>與模型?
我想知道both.Like之間的區別時,使用什麼?
將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
對象(例如,有問題的頁面可能是一個Index
或Search 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
也表示不變性,即視圖應該讀取集合,但可能不是例如。 Add
或Delete
個實體(即離開腳手架IEnumerable
並且不將其改變爲例如IList
或ICollection
)的良好做法。
非常感謝 – Dave