【发布时间】:2014-11-18 19:46:10
【问题描述】:
我有一个包含其他 ViewModel 的 ViewModel
public class AllProductsViewModel
{
public ICollection<ProductSearchViewModel> ProductSearch { get; set; }
public ICollection<ProductRentViewModel> ProductRent { get; set; }
public ICollection<ProductBuyViewModel> ProductBuy { get; set; }
}
我的控制器是:
public ActionResult Index()
{
var listOfProductsBuy = db.ProductsBuy.Select(x => new ProductBuyViewModel
{
Id = x.Id,
Title = x.Title,
MasterImageUrl = x.Images.FirstOrDefault().Url,
Price = x.Price,
Values = x.Value,
}).ToList();
var listOfProductsRent = db.ProductsRent.Select(y => new ProductRentViewModel
{
Id = y.Id,
Title = y.Title,
MasterImageUrl = y.ImagesRent.FirstOrDefault().Url,
Price = y.Price,
Values = y.Value,
}).ToList();
var listOfProductsSearch = db.ProductSearches.Select(z => new ProductSearchViewModel
{
Id = z.Id,
Title = z.Title,
MasterImageUrl = z.ImagesSearch.FirstOrDefault().Url,
Price = z.Price,
Values = z.Value,
}).ToList();
var viewModel = new AllProductsViewModel { ProductBuy = listOfProductsBuy, ProductRent = listOfProductsRent, ProductSearch = listOfProductsSearch };
return View(viewModel);
}
}
我的观点:
@model IEnumerable<RealEstateMarket.ViewModels.AllProductsViewModel>
@{
ViewBag.Title = "Home Page";
}
<br />
<div class="row">
<div class="col-md-3">
@foreach (var item in Model)
{
<h3>@item.ProductBuy.Select(x => x.Title)</h3>
<div>
<img height="100" width="120" class="thumbnail" src="@item.ProductBuy.Select(x => x.MasterImageUrl )" />
</div>
<h3>@item.ProductBuy.Select(x => x.Price) @item.ProductBuy.Select(x => x.Values.Currency)</h3>
}
</div>
</div>
想取ProductBuyViewModel、ProductRentViewModel、ProductSearchViewModel的字段 当我启动此代码时,我收到错误消息:传递到字典中的模型项的类型为“RealEstateMarket.ViewModels.AllProductsViewModel”,但该字典需要类型为“System.Collections.Generic.IEnumerable`1[RealEstateMarket. ViewModels.AllProductsViewModel]'。
【问题讨论】:
-
尝试将 ienumerable 更改为 List
-
您的视图期望多个
AllProductsViewModel作为其模型,但您只传递一个AllProductsViewModel给它。您需要问自己是您的视图应该处理多个还是单个AllProductsViewModel。
标签: asp.net-mvc-3 asp.net-mvc-4 razor viewmodel