2016-08-14 90 views
-2

的selectedItem屬性我有下面的代碼在Repository.cs來獲取TimezonesMVC選擇列表的不顯示在下拉

public static IEnumerable<SelectListItem> GetTimeZoneList() 
{ 
    return TimeZoneInfo.GetSystemTimeZones().Select(x => new SelectListItem() 
    { 
     Value = x.Id, 
     Text = x.DisplayName 
    }); 
} 

和我AddEditEmployeeViewModel.cs是如下:

public class AddEditEmployeeViewModel 
{ 
    public string TimeZoneID { get; set; } 
    public SelectList TimeZones { get; set; } 
} 

和Ajax調用,我填型號如下:

public PartialViewResult GetAddEditEmployee(string id) 
{ 
    var model = new AddEditEmployeeViewModel(); 
    model.TimeZones = new SelectList(Repository.GetTimeZoneList(), "Value", "Text"); 
    var employee = (from e in context.tbl_users where e.eid == eid select new { e.fnamae, e.lname, e.account_status, e.preferred_timezone }).FirstOrDefault(); 
    if (employee == null) return PartialView("_AddEditEmployee", model); 
    model.TimeZoneID = employee.preferred_timezone; 
    //model.TimeZoneID will have values like India Standard Time, UTC etc., 
    //..Other properties 
    return PartialView("_AddEditEmp", model); 
} 

夏娃n雖然model.TimeZoneID與獲取的選擇列表具有匹配的值,但它不會將值項保留爲選定狀態。我可以看到SelectList中DB的值。截圖以供參考

SelectList items

這裏是view code

@Html.DropDownListFor(m => m.TimeZoneID, Model.TimeZones, "Select a Timezone", new { @class = "selectpicker", data_width = "100%", }) 

有什麼錯誤我犯在這裏。需要做什麼修改才能從dropdownlist/selectpicker中選擇該項目?

+0

你在'model.TimeZoneID'有效值返回局部視圖之前? – Shyju

+0

是的,我這樣做,正如上面代碼中提到的那樣.. @Shyju –

+2

你的代碼看起來非常好。這裏是我從你的代碼中創建的一個工作示例https://dotnetfiddle.net/FiIEOf – Shyju

回答

1

作爲一個規則,我會

model.TimeZones = new SelectList(
    Repository.GetTimeZoneList(), 
    "Value", 
    "Text", 
    model.TimeZoneID); 

更換

model.TimeZones = new SelectList(
    Repository.GetTimeZoneList(), 
    "Value", 
    "Text"); 

基本上,使用overload that takes the selected value as a parameter。你也可以簡單地回到你的時區的對象,而不是SelectListItems的集合:

public static IEnumerable<TimeZone> GetTimeZoneList() 
{ 
    return TimeZoneInfo.GetSystemTimeZones(); 
} 

model.TimeZones = new SelectList(
    Repository.GetTimeZoneList(), 
    "ID", 
    "DisplayName", 
    model.TimeZoneID); 
+0

中的一個值仍然沒有運氣,它的代碼應該可以正常工作。它作爲'Nothing Selected'出現.. –

+0

@GuruprasadRao爲了消除顯而易見的原因:做了你重建? –

+0

是的..我沒有..再次運氣.. :( –

相關問題