我是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的情况下知道在哪里找到正确的列表?
答案 0 :(得分:1)
由于您已将DropDownList命名为“TypeID”,因为没有提供SelectList,代码将在Model中搜索名为“TypeID”的项目。
因此,调用ViewBag.TypeID来获取SelectList是在幕后进行的。
答案 1 :(得分:0)
事实:
在您的示例中,您不必投射SelectList ViewBag,因为ViewBag是动态类型。
TypeID的SelectList部分功能已在控制器部分完成。
因此,在创建时单独调用TypeID将触发其下的所有内容。