【问题标题】:Loop through multiple models in MVC 5 using razor使用 razor 循环遍历 MVC 5 中的多个模型
【发布时间】:2016-10-07 21:43:45
【问题描述】:

我正在设置一个从数据表填充的ViewData.Model。在我的视图中,我正在循环显示数据的ViewData.Model。我正在尝试创建一个 second ViewData.Model 并做同样的事情。我该如何做到这一点?我有第一个工作的 ViewData.Model 的代码。如果您继续往下看,我会尝试设置第二个ViewData.Model,但我无法在视图中显示数据...

具有工作 ViewData.Model 的控制器

var dataTable = new DataTable();
dataTable.Load(reader);
ViewData.Model = dataTable.AsEnumerable();

使用有效的 ViewData.Model 查看

@foreach (var item in ViewData.Model)
{
   @item["ACCT_ID"]
}

具有第二个 ViewData.Model 的控制器

var dataTable = new DataTable();
dataTable.Load(dataReader);
ViewData["scheduledDate"] = dataTable.AsEnumerable();

使用第二个 ViewData.Model 拉取视图但不起作用

@foreach (var item in ViewData["scheduledDate"] )
{
    @item["DATE_ID"]
}

更新 - 工作第二个 ViewData.Model 感谢@teo van kot,我现在可以使用我的第二个 ViewData.Model 显示内容。这是我认为有效的代码...

 @foreach (var item in (IEnumerable<System.Data.DataRow>)ViewData["scheduledDate"])
    {
        @item["DATE_ID"]
    }

【问题讨论】:

    标签: razor foreach model viewdata asp.net-mvc-5


    【解决方案1】:

    如果您使用ViewData,您应该将模型转换为您的类型。

    像这样:

    @foreach (var item in (IEnumerable<YourType>)ViewData["scheduledDate"] )
    {
        @item["DATE_ID"]
    }
    

    只需将 YourType 更改为您实际拥有的类型,这将起作用

    【讨论】:

    • 感谢您的帖子。我想我越来越近了,但我不得不问一个愚蠢的问题。如何确定我实际拥有的类型?我尝试使用IEnumerable&lt;string&gt;,但随后@item["DATE_ID"] 抱怨说“无法从int 转换字符串”。然后我尝试了IEnumerable&lt;int&gt;,但仍然出现错误
    • @GRU119 在你的控制器中设置断点,然后检查手表仪器你到底有什么
    • 你就是男人!原来我需要的类型是System.Data.DataRow
    猜你喜欢
    • 1970-01-01
    • 2017-11-01
    • 2014-08-25
    • 1970-01-01
    • 2020-05-03
    • 1970-01-01
    • 2018-02-13
    • 2018-06-14
    • 1970-01-01
    相关资源
    最近更新 更多