我想返回我的视图产品信息(名称和成本),并且在我的View代码的foreach语句中遇到以下错误: 无法将类型'ProductApp.Models.Product'隐式转换为'System.Collections.IEnumerable'。存在显式转换(您是否错过了演员?)
我似乎错过了一些简单的愚蠢。任何人都可以帮我纠正这个吗?
存储库代码:
public class ProductRepository
{
DatabaseEntities db = new DatabaseEntities();
public IQueryable<Product> FindAllProducts()
{
return db.Products;
}
public Product GetProductInfo(int id)
{
return db.Product.FirstOrDefault(p => p.Product_ID == id);
}
}
控制器代码:
public ActionResult Index(int id)
{
Product product = productRepository.GetProductInfo(id);
return View("Index", product);
}
查看代码:
<ul>
<% foreach (var product in Model)
{ %>
<li>
<%: product.Product_Name%>
which costs
<%: product.Product_Cost%>
is available.
</li>
<% } %>
</ul>
答案 0 :(得分:0)
您循环遍历产品的单个实例。您将传递从GetProductInfo返回的内容,该内容不是产品集合。
答案 1 :(得分:0)
在您的视图中,查看模型类型。视图中的第一行将告诉您View期望的类型:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<myApp.Model.Product>" %>
Inherits
部分应该告诉您您期望的类型。在上面的示例中,它需要一个Product
类型。这需要匹配您传递给控制器中View()方法的对象的类型。
您的视图可能具有类似“
”的继承类型...Inherits="System.Web.Mvc.ViewPage<List<myApp.Model.Product>>"...
因此,您应该确保从控制器返回项目列表。