2013-01-25 56 views
1

我是MVC的新手,我無法理解一段代碼。 我創建了一個新的控制器,並使用了它的所有CRUD方法和視圖 - 由visual studio自動生成 - 並且我無法理解代碼的一部分。Razor MVC 3,ViewBag中的Dropdownlist - 幫助理解這段代碼

看,在控制器從數據庫中設置的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) 

這是我的疑問。 MVC如何知道在哪裏找到正確的列表而不指定ViewBag?

回答

0

事實:



在您的例子你沒有投選擇列表的ViewBag因爲ViewBag是動態

TYPEID的選擇列表的部分功能已經被你的完成。控制器部分
因此,在創建時單獨調用TypeID已經可以觸發它下面的所有內容。

+0

謝謝。你用@ heads5150的答案來幫助我理解一點。 –

1

既然您已經命名了DropDownList「TypeID」,因爲沒有提供SelectList,代碼將在Model中搜索名爲「TypeID」的項。

因此,調用ViewBag.TypeID來獲取SelectList是在幕後進行的。

+0

謝謝你的exp蘭西人。由於我對MVC並不是很熟悉,所以看起來好像很神奇。 –