使用父模型在一个视图中使用MVC多个模型

时间:2014-09-19 10:46:30

标签: c# visual-studio asp.net-mvc-4

我试图在我的索引页面中添加第二个模型(包含2个部分视图作为双列页面)"使用ViewModel传递多个模型"本页的一部分:http://www.codeproject.com/Articles/687061/Using-Multiple-Models-in-a-View-in-ASP-NET-MVC-M

我创建了一个模型来容纳另外两个名为MasterModel的模型,这是我希望存储其他模型的地方

public class MasterModel
{
    public UserInfo UserInfo { get; set; }
    public LogDataServerDBEntities LogDataServerDBEntities { get; set; }
}

在我的索引中,_NewRequest _ExistingRequest页面我改变了模型

@model IEnumerable<TMTMonitorandCompare.Models.UserInfo>

@model IEnumerable<TMTMonitorandCompare.Models.MasterModel>

并将我的数据显示更改为&#34; Model.UserInfo&#34;

 @if (Model.UserInfo != null)
 {
   foreach (var item in Model.UserInfo)
      {
          <tr>
             <td>
             <input type="checkbox" class="checks">
             </td>

             <td class="modal2row" data-toggle="modal" data-id="1" data-target="#basicModal3">
                  @Html.DisplayFor(modelItem => item.CreationDateTime)
             </td>

             <td class="modal2row" data-toggle="modal" data-id="1" data-target="#basicModal3">
                 @Html.DisplayFor(modelItem => item.AppModeId)
             </td>

         </tr>
       }
 }

ControllerMethod:

[HttpGet]
    public ActionResult Index(string filtername)
    {
        var filterresults = from m in db.UserInfoes
                            select m;

        filterresults = filterresults.Where(x => x.UserCode.ToString().Contains(filtername)).OrderBy(x => x.UserCode);
        CheckDownloaded();
        PopulateViewbag();

        return View(filterresults);
    }

现在我才收到错误:

错误1&#39; System.Collections.Generic.IEnumerable&#39;不包含&#39; UserInfo&#39;的定义没有扩展方法&#39; UserInfo&#39;接受类型为'System.Collections.Generic.IEnumerable&#39;的第一个参数。可以找到(你错过了使用指令或程序集引用吗?)

任何人都可以向我解释我在哪里/我的错误?

1 个答案:

答案 0 :(得分:3)

UserInfoMasterModel中的对象(不是集合)。我怀疑你想要的是什么

public class MasterModel
{
  public List<UserInfo> UserInfo { get; set; }
  ....
}

并在主视图中

@model TMTMonitorandCompare.Models.MasterModel

然后你可以使用

foreach (var item in Model.UserInfo)
{
  ....

修改

根据OP提供的其他信息,需要更改操作方法以匹配模型

[HttpGet]
public ActionResult Index(string filtername)
{
  var filterresults = from m in db.UserInfoes select m;
  filterresults = filterresults.Where(x => x.UserCode.ToString().Contains(filtername)).OrderBy(x => x.UserCode);
  ....
  MasterModel model = new MasterModel();
  model.UserInfo = filterresults;
  // set other properties of model as required
  return View(model);
}