要在mvc3 nhibernate中的下拉列表中存储选定的值

时间:2012-03-20 06:42:07

标签: asp.net-mvc-3 nhibernate html.dropdownlistfor

我正在使用nhibernate并想创建一个简单的下拉列表 这是senario: 我有一个产品类,包括名称,产品类型,以及它的值和id 产品类型是外键,这是我的Product_Type类中的主键 Alli需要做的是在表格中添加产品 为此我需要一个下拉列表来显示所有类型的产品

产品型号

  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; }
  }

我创建了映射文件,其中我将Product_Types映射到表Product for foriegn key

我在我的控制器中写了这个

  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'的ViewData项具有键'Prod_Types'。

我在其他论坛搜索但没有得到正确的答案 请帮帮我 谢谢!!

1 个答案:

答案 0 :(得分: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"]
)