两种型号还是一种观点?

时间:2012-04-27 03:59:25

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

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

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>

我该怎么办?

Edit-- 我在索引视图中尝试这个

@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'的公共定义

int this line

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

3 个答案:

答案 0 :(得分:0)

视图中的模型应为@model mainmodel

答案 1 :(得分:0)

@model IEnumrable或您尝试@model IeEnumrable<mainmodel>?如果你试过@model IEnumrable<mainmodel>比mainmodel有用户列表和管理员。但我从你的问题中理解我认为下面的话会对你有帮助。

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

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

如果想要通过管理员迭代,管理员也是如此。否则只需使用@Model.Admin.id

答案 2 :(得分:0)

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