Razor MVC 3,ViewBag中的Dropdownlist - 帮助理解这段代码

时间:2013-01-25 00:18:04

标签: asp.net-mvc razor viewbag html-select

我是MVC的新手,我无法理解一段代码。 我创建了一个新的控制器,并使用它所有的CRUD方法和视图 - 由visual studio自动生成 - 我无法理解代码的一部分。

在控制器中,它从数据库中设置一个SelectList并将其放在ViewBag中,如下所示: 控制器

public ActionResult Create()
{    
    ViewBag.TypeID = new SelectList(db.PlacementTypes, "TypeID", "Description");
    return View();
} 

在视图中它就像这样:

<div class="editor-label">
    @Html.LabelFor(model => model.TypeID, "PlacementType")
</div>
<div class="editor-field">
    @Html.DropDownList("TypeID", String.Empty)
    @Html.ValidationMessageFor(model => model.TypeID)
</div>

我不明白的是。哎呀是SelectList来自哪里?因为我没有看到对ViewBag的调用。

我希望有类似的东西:

@Html.DropDownListFor("TypeID", (SelectList)ViewBag.TypeID)

这是我的疑问。如何在不指定ViewBag的情况下知道在哪里找到正确的列表?

2 个答案:

答案 0 :(得分:1)

由于您已将DropDownList命名为“TypeID”,因为没有提供SelectList,代码将在Model中搜索名为“TypeID”的项目。

因此,调用ViewBag.TypeID来获取SelectList是在幕后进行的。

答案 1 :(得分:0)

事实:



在您的示例中,您不必投射SelectList ViewBag,因为ViewBag是动态类型。

TypeID的SelectList部分功能已在控制器部分完成。
因此,在创建时单独调用TypeID将触发其下的所有内容。