如何在一个视图中使用两个 IEnumerable 模型?

Posted

技术标签:

【中文标题】如何在一个视图中使用两个 IEnumerable 模型?【英文标题】:How to use two IEnumerable Model in one view? 【发布时间】:2020-12-01 07:57:07 【问题描述】:

我尝试在一个视图中使用两个模型。这是我的模型代码:

模型“公告”

public partial class Announce

    public int No  get; set; 
    public string Announce_Subject  get; set; 
    public string Announce_Context  get; set; 
    public string Announce_Author  get; set; 
    public Nullable<System.DateTime> Announce_Date  get; set; 

模型消息

public partial class Message

    public int MessageId  get; set; 
    public string MessageTo  get; set; 
    public string MessageFrom  get; set; 
    public string Text  get; set; 

两个模型的模型总数

public class Total

    public IEnumerable<Announce> Announce1  get; set; 
    public IEnumerable<Message> Message  get; set; 

我的观点

@model DemoEmployee.Total

@foreach (var item in Model.Announce1)

    <tr>
        <td>
            @html.ActionLink(item.Announce_Subject, "Details", "Announces", new  id = item.No , null)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Announce_Author)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Announce_Date)
        </td>
    </tr>



@foreach (var item in Model.Message)

    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.MessageFrom)
        </td>
        <td>
            @Html.ActionLink(item.Text, "Details", new  id = item.MessageId )
        </td>
        <td>
            @Html.ActionLink("Delete", "Delete", new  id = item.MessageId )
        </td>
    </tr>

索引控制器

public ActionResult Index()

    return View(db.Announce.ToList());

我不知道我的问题是什么。我收到了这个错误:

“传入字典的模型项的类型为‘System.Collections.Generic.List`1[DemoEmployee.Announce]’,但此字典需要‘System.Collections.Generic.IEnumerable`1[DemoEmployee.全部的]”

请帮帮我!

【问题讨论】:

【参考方案1】:

由于您在视图中定义了@model DemoEmployee.Total,您需要在return View() 中传递Total 的对象。

DemoEmployee.Total 的对象传递给View(...) 而不是Announce 的列表。更新您的return 声明如下。

public ActionResult Index()

    return View(new DemoEmployee.Total()  Announce1 = db.Announce.ToList(), Message = new List<Message>() );

【讨论】:

以上是关于如何在一个视图中使用两个 IEnumerable 模型?的主要内容,如果未能解决你的问题,请参考以下文章

如何在html数据表视图中显示IEnumerable数据分组id?

在 1 个视图中添加 2 个 IEnumerable 模型

如何根据另一个选择下拉jquery MVC过滤一个选择?

如何将两个 IEnumerable<T> 连接成一个新的 IEnumerable<T>?

MVC 3 在 IEnumerable 模型视图中编辑数据

如何在 C# 中使用 Ienumerable 反转一系列元素?