【问题标题】:Show single data column in ASP.NET MVC 5 using Entity Framework 6使用 Entity Framework 6 在 ASP.NET MVC 5 中显示单个数据列
【发布时间】:2016-01-18 15:07:40
【问题描述】:

对不起,如果这个问题存在。

我使用 ASP.NET MVC 5 + Entity Framework 来构建一个项目,但我遇到了一个无法解决的问题。

在控制器中:

private NewsEntities db = new NewsEntities();

public ActionResult Index()
{
        var art = db.Articles.Where(m=>m.Id==1).Select(m => new { m.Id , m.NameArt}).ToList();
        return View(art);
}

并且在视图中:

@model IEnumerable<DemoHC.Models.Article>
@foreach (var item in Model) {
<tr>
    <td>
        @Html.DisplayFor(modelItem => item.Id)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.NameArt)
    </td>
<tr>
}

我在服务器中构建它时显示错误:

传入字典的模型项的类型为“System.Collections.Generic.List1[&lt;&gt;f__AnonymousType12[System.Int32,System.String]]”,但此字典需要类型为“System.Collections”的模型项.Generic.IEnumerable`1[DemoHC.Models.Article]'。

你能帮我吗,谢谢亲

【问题讨论】:

    标签: entity-framework asp.net-mvc-5


    【解决方案1】:

    您的查询正在创建匿名对象的集合,而不是 Article 对象的集合。

    把你的代码改成

    public ActionResult Index()
    {
        var art = db.Articles.Where(m => m.Id == 1);
        return View(art);
    }
    

    或者您也可以创建一个仅包含您想要的属性的视图模型

    public class ArticleVM
    {
        public int ID { get; set; }
        public string Name { get; set; }
    }
    

    并将查询更改为

    var art = db.Articles.Where(m => m.Id == 1).Select(m => new ArticleVM
    {
        ID = m.Id,
        Name = m.NameArt
    };
    return View(art);
    

    然后视图中的模型将是

    @model IEnumerable<ArticleVM>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-10
      • 1970-01-01
      • 2016-12-03
      • 2013-10-27
      • 1970-01-01
      • 2017-09-30
      • 2023-03-05
      • 1970-01-01
      相关资源
      最近更新 更多