我已经研究过这个问题但无法找到解决方案。我的问题是,在我看来,我无法查看我的ViewModel的属性(例如,Model.Supplier.SupplerName)。 Intellisense只允许我使用Model.Suppliers,或Model.ToolTypes或Model.ToolTypesSuppliers。我无法获得我在ViewModel中包含的每个模型的属性。
视图模型:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace ToolOrder.Models
{
public class ToolTypeSupplierViewModel
{
public ToolTypeSupplierViewModel(IEnumerable<ToolType> tooltypes, IEnumerable<Supplier> suppliers, IEnumerable<ToolTypeSupplier> tooltypesuppliers)
{
this.ToolTypes = tooltypes;
this.Suppliers = suppliers;
this.ToolTypeSuppliers = tooltypesuppliers;
}
public IEnumerable<ToolType> ToolTypes { get; private set; }
public IEnumerable<Supplier> Suppliers { get; private set; }
public IEnumerable<ToolTypeSupplier> ToolTypeSuppliers { get; private set; }
}
}
控制器:
public ActionResult ListToolTypeSupplierOptions()
{
var _tooltypelist =_repository.FetchAllToolTypeOptions();
var _supplierlist = _repository.FetchAllSupplierOptions();
var _toolstypesupplierlist = _repository.FetchAllToolTypeSupplierOptions();
return View(new ToolTypeSupplierViewModel(_tooltypelist, _supplierlist, _toolstypesupplierlist));
}
查看:
@model IEnumerable<ToolOrder.Models.ToolTypeSupplierViewModel>
<table>
<tr>
<th>Supplier</th>
<th>Tool TYpe</th>
<th>Created</th>
<th>Last Modified </th>
</tr>
@foreach (var item in Model.) {
<tr>
<td>
</td>
</tr>
}
</table>
如果需要任何帮助,或者如果需要进一步澄清,我可以跟进。如果这有点模糊,我很抱歉,我一直想弄清楚为什么我不能拉出我在ViewModel中包含的每个Model的属性。提前谢谢。
答案 0 :(得分:4)
试试这个:
@foreach (var item in Model) {
@foreach (var supplier in item.Suppliers){
<tr>
<td>
@supplier.SupplierName
</td>
</tr>
}
}
您似乎需要遍历供应商,这是IEnumerable。
答案 1 :(得分:1)
你的问题有点误导,所以我会尝试回答这两种情况。
ToolTypeSupplierViewModel
的单个实例从控制器传递给您的视图,而不是可枚举的。如果这不是错误,那么错误就在您的视图中 - 模型不应该是ToolTypeSupplierViewModel
的IEnumerable,而是单ToolTypeSupplierViewModel
。在这种情况下,您可以直接迭代Model.ToolTypes,Suppliers等。IEnumerable<ToolTypeSupplierViewModel>
类型,那么首先你应该直接迭代模型,因为它是可枚举的本身。其项目为ToolTypeSupplierViewModel
。在这种情况下,代码将为ysrb建议答案 2 :(得分:0)
尝试Razor文件顶部的@using ToolOrder.Models
。
或在web.config中,找到名称空间部分并将其添加到那里
<namespaces>
...
<add namespace="ToolOrder.Models" />