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]' のモデル項目が必要です.

このエラーが発生したとき、戻り値 View(product);を変更しました。View((IEnumerable)product);を 返す しかし、それは再び機能しませんでした。

ページを見る

    @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 クラス

    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タイプオブジェクトのexpectリストを表示します。( @model IEnumerable<Product>)を参照してください。

次のようなものを使用してみてください。

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

次のようなインターフェイスを作成する必要があると思います。

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

クラス Product の代わりに、この IEnumerable インターフェイスを使用するようにコントローラーを変更します。

于 2012-09-22T12:43:32.990 に答える
0

ビューで @model IEnumerable を宣言しました。これは、このビューが Product 型の Enumeration に厳密に型指定されていることを意味し、View は常に typ Product の列挙を期待します。ここで発生するエラーは、ビューのタイプと一致しない単一の Product オブジェクトを渡しているためです。

に固執したい場合はIEnumeratble<product>、Controller または TypeListOf() メソッドで製品のリストを作成し、それを View に渡すことをお勧めします。

于 2012-09-24T00:30:35.587 に答える