通过两个具有相关日期的模型来查看 MVC4
Posted
技术标签:
【中文标题】通过两个具有相关日期的模型来查看 MVC4【英文标题】:pass two model with related date to view MVC4 【发布时间】:2014-06-03 07:34:28 【问题描述】:如何传递两个具有相关日期的模型来查看 MVC4。
我有要求类别,供应商必须检查他是否有具体要求。
所以我需要在我的视图中显示一列中的需求列表和另一列中的供应商检查/答案。所以我想我需要传递它们相互关联的 2 个模型。怎么做?然后将供应商对特定要求的回答存储在数据库中。
这是我的模型
namespace OTMS.Models
public class Requiernments
[Key]
public int RequiernmentId get; set;
public int ID get; set; //link to project Name
public string RequiernmentName get; set;
public string RequiernmentType get; set;
namespace OTMS.Models
public class Supplier
[Key]
public int SupplierId get; set;
public int RequiernmentId get; set;
public string SupplierName get; set;
public string Answer get; set;
更新:
我的视图模型:
namespace OTMS.ViewModel
public class SupplierAnswerViewModel
public Supplier Sup get; set;
public Requiernments Req get; set;
我的控制器:
public ProjectContext b = new ProjectContext();
public ActionResult ListRequiermentBySupplier(int ID) //Id of the project
var Project = b.RequiernmentEntries.Where(s => s.ID == ID).ToList();//geting all requierment under project
List<SupplierAnswerViewModel> listvm = new List<SupplierAnswerViewModel>();
SupplierAnswerViewModel vm = new SupplierAnswerViewModel();
vm.requirements = new Requiernments();
vm.requirements.RequiernmentId = ID;
vm.supplier = new Supplier();
vm.supplier.SupplierId = 2; //am testing supplier of this id=2 for now
listvm.Add(vm);
return View(listvm); ;
我的看法:
@model IEnumerable<OTMS.ViewModel.SupplierAnswerViewModel>
<table>
<tr>
<th>
RequiernmentName
</th>
<th>
RequiernmentType
</th>
<th>
UserId
</th>
<th>
SupplierName
</th>
<th>
Supplier Answer
</th>
<th></th>
</tr>
@if (Model != null)
foreach (var item in Model)
<tr>
<td>
@html.DisplayFor(modelItem => item.requirements.RequiernmentName)
</td>
<td>
@Html.DisplayFor(modelItem => item.requirements.RequiernmentType)
</td>
<td>
@Html.DisplayFor(modelItem => item.supplier.UserId)
</td>
<td>
@Html.DisplayFor(modelItem => item.supplier.SupplierName)
</td>
<td>
@Html.DisplayFor(modelItem => item.supplier.Answer)
</td>
<td>
<td>
@Html.ActionLink("Edit", "Edit", new /* id=item.PrimaryKey */ ) |
</td>
</tr>
</table>
【问题讨论】:
ASP.NET MVC - View with multiple models的可能重复 【参考方案1】:创建视图模型
public class ViewModel
public Requirements requirements get; set;
public Supplier supplier get; set;
然后在你的控制器上
List<ViewModel> listvm = new List<ViewModel>();
ViewModel vm = new ViewModel();
vm.requirements.RequiernmentId
vm.supplier.SupplierID = ...
listvm.Add(vm);
编辑
要将其中一项作为列表发送,请参阅上面的更改。然后将您的视图模型传递给视图
return View(listvm);
在你看来
@model List<OTMS.ViewModel.SupplierAnswerViewModel>
【讨论】:
以及如何将其传递到我的视图中? 请检查我的更新..我收到以下错误:传递到字典中的模型项的类型为“OTMS.ViewModel.SupplierAnswerViewModel”,但该字典需要“系统”类型的模型项。 Collections.Generic.IEnumerable`1[OTMS.ViewModel.SupplierAnswerViewModel]'。 这是因为您将单个模型传递给视图,但您已经在视图上定义了该模型的列表。如果您传递列表或将视图更改为仅单个实例,则错误将消失 嗯,我需要的是列表,用户“供应商”将给出他的答案并发布......它就像一个回答问题的表格,然后我可以检查每个供应商的答案。 .如何将其作为列表传递? 我尝试..但是你不能使用像@Html.DisplayFor(modelItem => item.requirements.RequiernmentName)这样的东西.....它不会显示我(RequiernmentName,RequiernmentType) ...等以上是关于通过两个具有相关日期的模型来查看 MVC4的主要内容,如果未能解决你的问题,请参考以下文章
如何查询两个不同日期的 Google Analytics 条件?