从表中初始化DropDown列表

时间:2012-10-18 04:32:42

标签: visual-studio-2010 drop-down-menu asp.net-mvc-4 asp.net-4.0

我是MVC4编程的新手。最初遵循NerdDinner教程。现在我逐渐使情景复杂化。我想从表的字段填充DropDown列表,但不知道如何,虽然我从互联网上搜索相关资料但无法得到一些复杂的信息。

场景是有2个表SoftwareCategory(代表软件的类别,无论是反病毒,图形等......)。

  1. Software表中,catID采用int形式,与catID表格中的Category具有外键关系。
  2. Category表中,catIDcatTitle是唯一的字段。
  3. 现在,在创建Create视图以添加/上传新Software时,我希望所有catTitle中的catID显示在{{1}中用户将从中选择软件类别,但我不知道该怎么做....

    我的Drop-Down List文件中使用的模型是

    Create.cshtml


    所以在这种情况下,

    的论据是什么
    @model SoftwarePortal.Models.Software
    


    我应该如何以及在何处指定SQL stmt来获取@Html.DropDownListFor() 和相应的catIDs? (我正在使用Linq来SQL ...)
    如何访问未声明为当前View的模型的表...?

2 个答案:

答案 0 :(得分:0)

在控制器中 假设您的Generated数据库实体将是SoftDBEntities

private SoftDBEntities se = new SoftDBEntities();
public ActionResult Create()
{
    //se.Categorys will get all categories
    //se.Categorys may be replace with a function which return records from Category table
    ViewBag.CatId= new SelectList(se.Categorys, "CatId", "CatTitle");
    return View();
} 

在cshtml文件中

@Html.DropDownList("CatId")

如果上述陈述不起作用,请尝试此

@Html.DropDownListFor(model.CatId,(SelectList)ViewBag.CatId,"CatId","CatTitle")

答案 1 :(得分:0)

哦,天啊!您是否相信我需要做的就是类型转换 ViewBag.Categories SelectList @Html.DropDownListFor()内的{{1}}!因为它不会自动采取存储项的形状... 我这么傻......