这是我的标记和代码:
@model ProductDetailModel
<div class="row no-gutters">
<div class="col-md-3">
<img src="~/img/@Model.Product.ImageUrl" class="img-fluid">
</div>
<div class="col-md-9">
<h1 class="mb-3">@Model.Product.Name</h1><hr>
@foreach (var item in Model.Catgeories)
{
<a href="#" class="btn btn-link p-0 mb-3">@item.Name</a>
}
<div class="mb-3">
<h4 class="text-primary mb-3">@Model.Product.Price</h4><i class="fas fa-lira-sign"></i>
</div>
<button type="submit" class="btn btn-primary btn-lg">Add to Cart</button>
</div>
</div>
<div class="row">
<div class="col-md-12">
<p class="p-3">@Model.Product.Description</p>
</div>
</div>
我收到此错误:
'Detail.cshtml'
'InvalidOperationException:传递到ViewDataDictionary中的模型项的类型为'shopapp.webui.Models.ProductListViewModel',但是此ViewDataDictionary实例需要一个类型为'shopapp.webui.Models.ProductDetailModel'的模型项。
答案 0 :(得分:0)
'InvalidOperationException:传递到ViewDataDictionary中的模型项的类型为'shopapp.webui.Models.ProductListViewModel',但是此ViewDataDictionary实例需要一个类型为'shopapp.webui.Models.ProductDetailModel'的模型项。 >
这意味着您的Details.cshtml需要模型ProductDetailModel
,但您传递了模型ProductListViewModel
。请确保您的后端代码如下:
public async Task<IActionResult> Details(int? id)
{
var model= new ProductDetailModel(){....};
//...
return View(model);
}
答案 1 :(得分:0)
“ ShopController” 公共IActionResult列表(字符串类别) {
var productViewModel=new ProductListViewModel()
{
Products=_productService.GetProductsByCategory(category)
};
return View(productViewModel);
}
public IActionResult Details(int? id)
{
if(id==null)
{
return NotFound();
}
Product product = _productService.GetProductDetails((int)id);
if(product==null)
{
return NotFound();
}
return View(new ProductDetailModel{
Product=product,
Catgeories=product.ProductCategories.Select(i=>i.Category).ToList()
});
}
'ProductDetailModel'
public class ProductDetailModel
{
public Product Product { get; set; }
public List<Category> Catgeories { get; set; }
}