2012-03-20 74 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