2012-06-18 71 views
1

在NHibernate中使用MVC3時,我遇到了下拉問題。我有一個用於用戶輸入的各種字段的表單,並且只對特定的select元素有問題。MVC3 DropDownListFor模型綁定正確,但未選擇模型值

我的問題是,即使模型被綁定並在帖子上正確保存,視圖加載時模型的屬性值也不會顯示爲選中狀態。令人奇怪的是,MainPopulationFocus(下面的代碼片段)下拉菜單正常工作,而MilitaryService下拉菜單則不正確。

型號 - 兵役標籤和下拉

@Html.LabelFor(m => m.MilitaryService, "Military Service") 
@Html.DropDownListFor(m => m.MilitaryService, ViewBag.MilitaryService as IQueryable<SelectListItem>, "", new { style = "width: 140px" }) 

HTML

<label for="MilitaryService">Military Service</label> 
<select id="MilitaryService" name="MilitaryService" style="width: 140px"> 
    <option value=""></option> 
    <option value="1028">Active</option> 
    <option value="1029">Reserve</option> 
    <option value="1030">National Guard</option> 
    <option value="1031">Retired Military</option> 
</select> 

同樣的觀點 - - 主要人口的重點標籤和下拉

問題

public virtual System.Int32? MilitaryService { get; set; } 
public virtual System.Int32? MainPopulationFocus { get; set; } 

視圖屬性的聲明

@Html.LabelFor(m => m.MainPopulationFocus, "Main Population Focus") 
@Html.DropDownListFor(m => m.MainPopulationFocus, ViewBag.MainPopulationFocuses as IQueryable<SelectListItem>, "", new { style = "width: 140px" }) 

HTML

<label for="MainPopulationFocus">Main Population Focus</label> 
<select data-val="true" data-val-number="The field MainPopulationFocus must be a number." id="MainPopulationFocus" name="MainPopulationFocus" style="width: 140px"> 
    <option value=""></option> 
    <option value="808">Education</option> 
    <option value="809">Policy</option> 
    <option selected="selected" value="810">Clinical Practice</option> 
    <option value="811">Research</option> 
</select> 

控制器 - 獲取從服務層對象列表和列表保存到ViewBag

.Select(s => new SelectListItem() { Text = s.Display, Value = s.ID.ToString(), Selected = (s.ID == fellowsProfile.MilitaryService) }); 

的MainPopulationFocus下拉完美的作品,而選擇了MilitaryService下拉值綁定到模型並保存在數據庫中,但不顯示視圖加載時選擇的值。

我知道在模型和下拉列表中使用相同的名稱時存在問題,但我避免了這種情況。我認爲這可能與我組建清單的方式有關。

感謝您的任何可能的幫助/建議。

回答

0

發現我確實使用相同的名稱,這就是爲什麼我得到我的問題。使用ViewBag.MilitaryService和MilitaryService的模型屬性破壞了下拉列表的使用。