MVC在一个视图中使用父级模型的多个模型
我试图在本页的“使用ViewModel传递多个模型”部分之后向我的索引页添加第二个模型(包含2个部分视图作为两列页面) :http://www.codeproject.com/Articles/687061/Using-Multiple-Models-in-a-View-in-ASP-NET-MVC-MMVC在一个视图中使用父级模型的多个模型
香港专业教育学院创建了一个模型,以保持所谓MasterModel这是我想保存我的其他车型
public class MasterModel
{
public UserInfo UserInfo { get; set; }
public LogDataServerDBEntities LogDataServerDBEntities { get; set; }
}
在我的索引,_NewRequest _ExistingRequest页我从
@model IEnumerable<TMTMonitorandCompare.Models.UserInfo>
改变模型中的其他2
到
@model IEnumerable<TMTMonitorandCompare.Models.MasterModel>
,并改变了我的数据显示为 “Model.UserInfo”
@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'System.Collections.Generic.IEnumerable'不包含一个'UserInfo'的定义并且没有扩展方法'UserInfo'接受类型'System.Collections.Generic.IEnumerable'的第一个参数可以找到(你是否缺少使用指令或程序集引用?)
任何人都可以解释对我来说,我在哪里/出什么问题?
UserInfo
是MasterModel
(不是集合)中的对象。我怀疑你想要的是
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);
}
感谢您对Stephan的帮助,在进行更改之后,Visual Studio中的错误消失。我还将部分视图更改为具有相同的@model语句,但运行解决方案时出现此错误: System.InvalidOperationException:传递到字典中的模型项类型为'System.Data.Entity.Infrastructure。 DbQuery'1 [TMTMonitorandCompare.Models.UserInfo]'),但是这个字典需要一个'TMTMonitorandCompare.Models.MasterModel'类型的模型项。 – Baggerz 2014-09-19 11:01:41
编辑你的问题,包括控制器方法 - 你似乎没有传递正确的对象到视图 - 它应该像'MasterModel model = new MasterModel(); model.UserInfo = someCollection;返回查看(模型);' – 2014-09-19 11:05:42
我没有在我的代码中,我建立了我的上面的索引方法。 – Baggerz 2014-09-19 11:09:45
你能不能请张贴控制器代码,并告诉你如何构建模型对象(MasterModel) – Thangadurai 2014-09-19 10:55:21
不知道这可能是一个问题,但作为一种实践,它不是adviceable使用相同的类名作为属性名称[public UserInfo UserInfo {get;组; }] – Thangadurai 2014-09-19 10:57:55
@Baggerz,我回滚了你的编辑 - 你完全不能改变这个问题。只需在注释中添加我要求的代码 – 2014-09-19 11:10:27