2011-11-11 85 views
0

如何維護MVC3中的dropdownlist的選定值?在MVC3中維護dropdownlist的狀態

我用下面的代碼來創建下拉列表:

<%= Html.DropDownList("PEDropDown", 
     (IEnumerable<SelectListItem>)ViewData["PEDropDown"], 
     new { onchange = "this.form.action='/Screener/Screener';this.form.submit();" } 
)%> 

回答

0

我不知道我得到你想要做的100%,但我相信你想選擇的值從下拉列表中?

在這種情況下:

new { onchange = "alert(this.options[this.selectedIndex].value);" } 

我把它放在一個警告現在,因爲我不知道你想用價值

+0

問題是在從下拉列表中選擇值後,調用post方法並因此失去其選定值 – user1019480

1

這裏做的是一個例子,我用。我不知道,這是你用它來填充的DropDownList

<%=Html.DropDownList("ddlCategories", IEnumerable<SelectListItem>)ViewData["PEDropDown"], "CategoryId", "CategoryName", Model.CategoryId), "Select Category", new { onchange = "this.form.action='/Screener/Screener';this.form.submit();"})%> 

另一種方式是,做一個選擇列表中的控制器如下

List<SelectListItem> CategoryList = new List<SelectListItem>(); 
       foreach (var item in Categories) 
       { 

        CategoryList.Add(new SelectListItem 
        { 
         Selected = Model.CategoryId, 
         Text = item.CategoryName, Value = Convert.ToString(item.CategoryId) }); 
       } 
ViewData["PEDropDown"]=CategoryList; 

,並在視圖中使用的

<%:Html.DropDownList("ddlCategories",IEnumerable<SelectListItem>)ViewData["PEDropDown"], "CategoryId", "CategoryName", new { onchange = "this.form.action='/Screener/Screener';this.form.submit();"})%> 
方式
0

將值傳遞迴您的控制器,然後在控制器中填充SelectListItems列表:

public actionresult yourmethod (int idToPass) 
{ 

List<SelectListItem> SLIList = new List<SelectListItem>(); 
foreach (Model model in dropdownList) 
{ 
    SelectListItem SLI = new SelectListItem(); 
    SLI.text = model.CategoryName; 
    SLI.selected = model.CategoryId == idToPass; 
    SLIList.Add(SLI); 
} 
    ViewData["myDDL"] = SLIList; 
} 
0

你可以試試這個。 使用ViewBag代替的ViewData(I建議,不如使用模型對象)

Html.DropDownList("PEDropDown", new SelectList(ViewBag.PEDropDown, "Key", "Value", Model.PEDropDownSelectedValue), new { onchange = "document.location.href = '/ControllerName/ActionMethod?selectedValue=' + this.options[this.selectedIndex].value;" })) 

的SelectList第四個參數是所選擇的值。它必須使用模型對象傳遞。 當您調用特定的操作方法時,請將模型對象設置如下。

public ActionResult ActionMethod(string selectedValue) 
{ 
    ViewModelPE objModel = new ViewModelPE(); 
    // populate the dropdown, since you lost the list in Viewbag 
    ViewBag.PEDropDown = functionReturningListPEDropDown(); 
    objModel.PEDropDownSelectedValue = selectedValue; 
    return View(objModel); 
    // You may use the model object to pass the list too instead of ViewBag (ViewData in your case) 
}