【问题标题】:Two Models or One View?两个模型还是一个视图?
【发布时间】:2012-05-07 20:12:27
【问题描述】:

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

public class Users {
   public int id { get; set; }
   public string adSoyad { get; set; }
   public string email { get; set; }
   public int puan { get; set; }
}
public class admin {
   public int id { get; set; }
   public string name { get; set; }
}

public class mainmodel {
   public Users Users { get; set; }
   public admin admin { get; set; }
}

我可以使用它来删除、编辑和创建视图。但我的索引视图中出现错误:

@model IEnumerable<donemProje.Models.mainmodel>

我能做什么?

编辑—— 我在索引视图中试试这个

@model donemProje.Models.mainmodel


@foreach (var item in Model.Users)
{
    <tr>
        <td>
            @Html.DisplayFor(modelItem =>item.adSoyad)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.email)

并得到这个错误

编译器错误消息:CS1579:foreach 语句无法对“donemProje.Models.Users”类型的变量进行操作,因为“donemProje.Models.Users”不包含“GetEnumerator”的公共定义

输入这一行

第 34 行:@foreach (var item in Model.Users)

【问题讨论】:

  • Users 类有可以有多个记录吗?和管理类也可以有多个或只有一个记录?

标签: asp.net asp.net-mvc-3


【解决方案1】:

你在视图中的模型应该是@model mainmodel

【讨论】:

    【解决方案2】:

    @model IEnumrable 或者您尝试过@model IeEnumrable&lt;mainmodel&gt; ?如果您尝试过@model IEnumrable&lt;mainmodel&gt;,则 mainmodel 中包含用户和管理员列表。但我从你的问题中了解到,我认为下面的话会对你有所帮助。

    你可以试试@model mainmodel,你可以使用foreach循环遍历mainmodel。

    foreach(var user in Model.Users)
    {
      // you code goes here..
    } 
    

    如果想遍历管理员,管理员也是一样的。否则只需使用@Model.Admin.id

    【讨论】:

      【解决方案3】:

      如果你想在一个视图中使用两个模型,你应该使用 ViewModels(一个由视图中使用的其他类组成的类)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-11-30
        • 2014-10-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多