4

我会说一点点英语。我试着问我的问题。

我有一个模型。它的名字是 Product.cs

  Product
  {
    public int TypeId { get; set; }/*these are at the same time field of Type Table*/
    public string TypeName { get; set; }

    public int TradeMarkId { get; set; }/*at the same time field of TradeMark Table*/
    public string TradeMarkName { get; set; }

    public int ProductId { get; set; }/*at the same time field of TProduct Table*/
    public string ProductName { get; set; }
    public int TId { get; set; }
    public int TMId { get; set; }

    public List<TypeProduct> typeList { get; set; }
  }

我的控制器页面

  My controller 
  [HttpGet]
  public ActionResult TradeMarkProduckAdd()
  {
    Product product = new Product();
    TypeList typeList = new TypeList();
    product = typeList.TypeListOf(product);
    return View(product);//"This doesn't work"            
  }

它说类型错误传递到字典的模型项的类型为“TypeMark.Models.Product”,但该字典需要类型为“System.Collections.Generic.IEnumerable`1[TypeMark.Models.Product]”的模型项.

当我收到此错误时,我更改了返回视图(产品);返回 视图((IEnumerable)产品);但它没有再次工作。

查看页面

    @using TypeTradeMark.Models
    @model IEnumerable<Product>
    @using (Html.BeginForm("AddProduct", "Home", FormMethod.Post))
    {
      @foreach(var item in Model as List<Product>)
      {                              
        @item.ProductName
        @item.??//checkbox for every record      
        @item.??//dropdownlist for trademarks      
      }    
    }

类型列表类

    TypeList class

    public class TypeList
    {
      VtDataContext Vt = new VtDataContext();
      public Product TypeListOf(Product typeListOf)
      {          
        var query = (from c in Vt.Types select c);
        typeListOf.typeList=new List<Type>(query.ToList());
        return typeListof;
      }
    }

我的桌子

    Type : TypeId, TypeName
    TradeMark : TradeMarkId,TradeMarkName
    TProduct : ProductId,ProductName,TId,TMId//TId relation with TypeId, TMId relation with TradeMarkId

我无法解决问题你能帮帮我吗?谢谢

4

3 回答 3

1

您查看期望Product类型对象的列表,请参阅 ( @model IEnumerable<Product>)。

尝试使用这样的东西:

return View(new List<Product> { product, product2 })
于 2012-09-22T12:40:04.667 回答
0

我相信你需要像这样创建一个界面:

public interface IProduct
{
    IEnumerable<Product> Products { get; }
}

更改您的控制器以使用此 IEnumerable 接口而不是类 Product。

于 2012-09-22T12:43:32.990 回答
0

在您的视图中,您已声明 @model IEnumerable,这意味着此视图被强类型化为 Product 类型的枚举,并且您的视图将始终期望一个类型为 Product 的枚举。您在这里遇到的错误是因为您传递了一个与视图类型不匹配的产品对象。

如果您想坚持使用IEnumeratble<product>,您可能需要在 Controller 或 TypeListOf() 方法中创建产品列表并将其传递给 View。

于 2012-09-24T00:30:35.587 回答