2011-08-03 97 views
1

我的編輯頁面上有一個非常奇怪的問題。下面的下拉菜單永遠不會是選定的值。MVC3 DropDownlistFor SelectedValue

@Html.DropDownListFor(model => model.Bodymaterial, (IEnumerable<SelectListItem>)ViewBag.Bodymaterial) 

但是,同一頁面上的下列下拉列表將獲得selectedvalue。

@Html.DropDownListFor(model => model.Unit, (IEnumerable<SelectListItem>)ViewBag.Units) 

第一個是這樣呈現的。

<select id="Bodymaterial" name="Bodymaterial"> <option value="EDTA">EDTA</option> <option value="SWAB">SWAB</option> <option value="UR">UR</option> <option value="FAE">FAE</option> <option value="IOF">IOF</option> <option value="SKIN">SKIN</option> <option value="HEP">HEP</option> <option value="CLOT">CLOT</option> <option value="CIT">CIT</option> <option value="CRM">CRM</option> <option value="CSF">CSF</option> <option value="RNA">RNA</option> <option value="MILK">MILK</option> <option value="BUC">BUC</option> </select>

第二上呈現爲它應該是。

<select data-val="true" data-val-required="The Unit field is required." id="Unit" name="Unit"><option selected="selected" value="µl">&#181;l</option> <option value="ml">ml</option> <option value="l">l</option> <option value="µg/ml">&#181;g/ml</option> </select>

爲什麼第二個是正確的渲染,而不是第一個?請幫忙....

回答

2

解決方法是將ViewBag.Bodymaterial屬性更改爲ViewBag.Bodymaterials。不知何故,當你的Viewbag屬性名稱與模型屬性名稱匹配時,Html.DropDownListFor就不瞭解它。

所以解決方案是。確保你的Viewbag屬性與你的modelproperty不一樣。希望這會節省你們很多小時....

+0

非常感謝。一個簡單的說明...我被咬了,因爲我的一個類有一個名爲Title的屬性,它與自動生成的cshtml文件頂部的標準ViewBag.Title =「MyTitle」衝突。花了我幾個小時來弄清楚,但感謝你的帖子,我做到了。 – jwalkerjr