2012-03-20 37 views
1

我使用nhibernate並希望創建一個簡單的下拉列表 這裏是senario: 我有一個產品類包含名稱,產品類型和它的值以及id 產品的類型是這裏的外鍵這是我PRODUCT_TYPE類 阿利需要做的主鍵是增加了產品在表 爲此,我需要一個下拉列表顯示所有類型的產品要從mvc3下拉列表中存儲選定的值nhibernate

的產品

型號
public class Product_Type 
{ 
    public virtual int Prod_Type_Id { get; set; } 
    [Required] 
    public virtual string Prod_Types { get; set; } 
} 

public class Product 
{ 
    public virtual int Product_Id { get; set; } 
    [Required] 
    public virtual string Product_Name { get;set; } 
    public virtual Product_Type Prod_Types { get; set; } 
    } 

我創建其中i映射Product_Types表產品爲foriegn關鍵

我在我的控制器寫了這個映射文件

ViewData["prod_types"] = new SelectList(new Product_Service().GetProdType().ToList(), "Product_Type"); 

其中GetProdType是一個函數填充列表 在我正在填充我的列表作爲視圖

@Html.DropDownListFor(Model=>Model.Prod_Types,(IEnumerable<SelectListItem>)ViewData["prod_types"]); 

但它給我一個錯誤 有型「的IEnumerable」具有關鍵「Prod_Types」沒有ViewData的項目。

我在其他論壇搜索,但沒有得到正確的答案 請幫我這個 謝謝!

+0

[創建在MVC NHibernate的下拉列表(可能重複http://stackoverflow.com/questions/9781576/creating-a -dropdown-list-in-mvc-nhibernate) – Rippo 2012-03-20 06:46:56

回答

1

您在ViewData中使用了與綁定屬性相同的密鑰。試試這樣:

ViewData["AvailableProductTypes"] = new SelectList(
    new Product_Service().GetProdType().ToList(), 
    "Prod_Type_Id", 
    "Prod_Types" 
); 

,並在視圖:

@model Product_Type 
... 
@Html.DropDownListFor(
    x => x.Prod_Type_Id, 
    (IEnumerable<SelectListItem>)ViewData["AvailableProductTypes"] 
) 
+0

由ProdTypeId ....哪個id是你指示??? 一個在我的視圖所基於的產品表中,或者在Product_Type表中,我的下拉列表正在填充.....請指定.. – 2012-03-20 07:27:59

+0

一個在您的視圖模型中。您希望稍後在您的POST控制器操作中使用該選項來讀取所選值。 – 2012-03-20 07:37:50

+0

....是在鼓勵我爲此創建一個視圖模型? 因爲這再次給我一個數據綁定的錯誤爲:'System.String'不包含名稱'ProductTypeId'的屬性 – 2012-03-20 07:45:51

相關問題