加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

采用IEnumerable与模型的Razor View之间的区别?

发布时间:2020-12-16 09:12:31 所属栏目:asp.Net 来源:网络整理
导读:我见过有人写@model IEnumerable WebApplication1.Models.Weight在他们的视图的顶部,一些写@model WebApplication1.Models.Weight 我想知道两者之间的区别.喜欢何时使用什么? 解决方法 采用IEnumerable Entity的剃刀视图作为模型意味着控件将一组对象(例如
我见过有人写@model IEnumerable< WebApplication1.Models.Weight>在他们的视图的顶部,一些写@model WebApplication1.Models.Weight

我想知道两者之间的区别.喜欢何时使用什么?

解决方法

采用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对象(例如,有问题的页面可能是索引或搜索结果页面,其中条目可以以表格方式与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).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读