代码之家  ›  专栏  ›  技术社区  ›  JeffM

如何将多个列返回到视图?

  •  0
  • JeffM  · 技术社区  · 15 年前

    我想返回我的视图产品信息(名称和成本)并在视图代码的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>
    
    2 回复  |  直到 13 年前
        1
  •  0
  •   Remus    15 年前

    在您的视图中,查看模型类型。视图中的第一行将告诉您视图需要的类型:

    <%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<myApp.Model.Product>" %>
    

    这个 Inherits 部分应该告诉你你想要什么类型。在上面的例子中,它期望 Product

    您的视图可能具有如下继承类型“

    ...Inherits="System.Web.Mvc.ViewPage<List<myApp.Model.Product>>"...
    

    因此,您应该确保从控制器返回项目列表。

        2
  •  0
  •   JeremyWeir    15 年前