gpt4 book ai didi

c# - 传入字典的模型项是 '' 类型的,但是这个字典需要一个 '' 类型的模型项

转载 作者:行者123 更新时间:2023-12-02 08:46:28 24 4
gpt4 key购买 nike

我正在尝试进入 mvc 技术,并且正在阅读 apress 的一本书“pro asp.net mvc 3 framework”。我被困在一个地方,我现在不知道如何解决它,因为这与普通的网络表单有很大不同。这是我收到的错误:传入字典的模型项的类型为“System.Data.Entity.Infrastructure.DbQuery`1[SportsStore.Domain.Entities.Product]”,但该字典需要一个模型“SportsStore.WebUI.Models.ProductsListViewModel”类型的项目。

我不知道我到底需要粘贴哪个代码,但这就是我所拥有的:

查看:

@model SportsStore.WebUI.Models.ProductsListViewModel           
@{
ViewBag.Title = "Products";
}

<h2>List</h2>

@foreach (var s in Model.Products)
{
<div class="item">
<h3>@s.Name</h3>
@s.Description
<h4>@s.Price.ToString("c")</h4>
</div>
}

<div class="pager">
@Html.PageLinks(Model.PagingInfo, x => Url.Action("List", new { page = x }));
</div>

产品负责人:

namespace SportsStore.WebUI.Controllers
{
public class ProductController : Controller
{
public int PageSize = 4;
private IProductsRepository repository;

public ProductController(IProductsRepository productsRepository)
{
repository = productsRepository;
}

public ViewResult List(int page=1)
{
ProductsListViewModel viewModel = new ProductsListViewModel
{
Products = repository.Products
.OrderBy(p => p.ProductID)
.Skip((page - 1) * PageSize)
.Take(PageSize),
PagingInfo = new PagingInfo
{
CurrentPage = page,
ItemsPerPage = PageSize,
TotalItems = repository.Products.Count()
}
};
return View(repository.Products.OrderBy(p => p.ProductID).Skip((page - 1) * PageSize).Take(PageSize));
}
}
}

如果您需要更多信息,请告诉我。谢谢,拉齐亚莱

最佳答案

改变这个:

return View(repository.Products.OrderBy(p => p.ProductID).Skip((page - 1) * PageSize).Take(PageSize));

为此:

return View(viewModel);

您的页面需要一个 SportsStore.WebUI.Models.ProductsListViewModel 类型的模型。您正在从您的数据存储库创建此 View 模型的实例,但在创建后未对其执行任何操作。 MVC 感到困惑,因为您发送到 View 的模型与预期的不同。我只是将返回更改为使用您在返回之前的行中创建的 viewModel

关于c# - 传入字典的模型项是 '' 类型的,但是这个字典需要一个 '' 类型的模型项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12146519/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com