我看到有些人写@model IEnumerable<WebApplication1.Models.Weight>
在他们的观点的顶部,有些人写@model WebApplication1.Models.Weight
我想知道两者之间的区别。就像什么时候使用什么?
以aIEnumerable<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
)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句