Razor View中如何区分使用IEnumerable与具体模型?
- 内容介绍
- 文章标签
- 相关推荐
本文共计652个文字,预计阅读时间需要3分钟。
我见过有人使用 `@model IEnumerable` 在他们的视图顶部,一些写 `@model WebApplication1.Models.Weight` 的,我想知道两者之间的区别。喜欢何时使用哪种?+ 采用 `IEnumerable` 的刀片视图作何用途?
使用 `@model IEnumerable` 表示视图模型是一个 `Weight` 对象的集合,而 `@model WebApplication1.Models.Weight` 则表示视图模型是一个单个 `Weight` 对象。
通常,使用 `IEnumerable` 是为了在视图中显示多个 `Weight` 对象,例如一个列表。而使用单个 `Weight` 对象则可能用于显示详细信息页面。
我喜欢在需要显示列表时使用 `IEnumerable`,因为它提供了更好的灵活性,允许我轻松地在视图中迭代和显示多个对象。
采用 `IEnumerable` 的刀片视图主要用于简化重复的视图逻辑。它允许你创建一个可重用的视图组件,该组件可以接受任何类型的实体作为模型,从而减少代码重复并提高维护性。
我见过有人写@model IEnumerable< WebApplication1.Models.Weight>在他们的视图的顶部,一些写@model WebApplication1.Models.Weight我想知道两者之间的区别.喜欢何时使用什么?
@model IEnumerable<MyNamespace.Entity>
会匹配一个控制器动作,如
[HttpGet] public ActionResult SearchByName(string startsWith) { var entities = Db.Entities .Where(e => e.StartsWith(startsWith)) .ToList(); return View(entities); }
这样视图就可以访问多个Entity对象(例如,有问题的页面可能是索引或搜索结果页面,其中条目可以以表格方式与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对象的详细信息,或允许更新或仅插入一个实体.
页面可用的相应Model实例对象将是@model的相应类型.
另一点需要注意的是,IEnumerable也表达了不变性,即View应该读取集合,但可能不会例如从中添加或删除实体(即,最好将脚手架保留为IEnumerable,而不是将其更改为例如IList或ICollection).
本文共计652个文字,预计阅读时间需要3分钟。
我见过有人使用 `@model IEnumerable` 在他们的视图顶部,一些写 `@model WebApplication1.Models.Weight` 的,我想知道两者之间的区别。喜欢何时使用哪种?+ 采用 `IEnumerable` 的刀片视图作何用途?
使用 `@model IEnumerable` 表示视图模型是一个 `Weight` 对象的集合,而 `@model WebApplication1.Models.Weight` 则表示视图模型是一个单个 `Weight` 对象。
通常,使用 `IEnumerable` 是为了在视图中显示多个 `Weight` 对象,例如一个列表。而使用单个 `Weight` 对象则可能用于显示详细信息页面。
我喜欢在需要显示列表时使用 `IEnumerable`,因为它提供了更好的灵活性,允许我轻松地在视图中迭代和显示多个对象。
采用 `IEnumerable` 的刀片视图主要用于简化重复的视图逻辑。它允许你创建一个可重用的视图组件,该组件可以接受任何类型的实体作为模型,从而减少代码重复并提高维护性。
我见过有人写@model IEnumerable< WebApplication1.Models.Weight>在他们的视图的顶部,一些写@model WebApplication1.Models.Weight我想知道两者之间的区别.喜欢何时使用什么?
@model IEnumerable<MyNamespace.Entity>
会匹配一个控制器动作,如
[HttpGet] public ActionResult SearchByName(string startsWith) { var entities = Db.Entities .Where(e => e.StartsWith(startsWith)) .ToList(); return View(entities); }
这样视图就可以访问多个Entity对象(例如,有问题的页面可能是索引或搜索结果页面,其中条目可以以表格方式与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对象的详细信息,或允许更新或仅插入一个实体.
页面可用的相应Model实例对象将是@model的相应类型.
另一点需要注意的是,IEnumerable也表达了不变性,即View应该读取集合,但可能不会例如从中添加或删除实体(即,最好将脚手架保留为IEnumerable,而不是将其更改为例如IList或ICollection).

