Asp.net-Mvc

mvc c# html.dropdownlist 和 viewbag

  • August 24, 2012

所以我有以下(虛擬碼):

string selectedvalud = "C";
List<SelectListItem> list= new List<SelectListItem>();
foreach(var item in mymodelinstance.Codes){
 list.Add(new SelectListItem { Text = item.Name, Value = item.Id.Tostring(), Selected = item.Id.ToString() == selectedvalue ? true : false });
}

ViewBag.ListOfCodes = list;

在我看來:

<%: Html.DropDownList("Codes", (List<SelectListItem>)ViewBag.ListOfCodes , new { style = "max-width: 600px;" })%>

現在,在它到達視圖之前,“列表”已經用項目填充它並標記了已經選擇的項目。但是當它到達視圖時,沒有一個選項被標記為選中。

我的問題是,是否可以使用 viewbag 來傳遞物品或者我應該使用不同的媒介?因為如果我以這種方式使用它,它會刪除選項上的選定標誌。

試試這樣:

ViewBag.ListOfCodes = new SelectList(mymodelinstance.Codes, "Id", "Name");
ViewBag.Codes = "C";

在您看來:

<%= Html.DropDownList(
   "Codes", 
   (IEnumerable<SelectListItem>)ViewBag.ListOfCodes, 
   new { style = "max-width: 600px;" }
) %>

為此,您顯然必須在您的集合中擁有一個 Id = “C” 的項目,如下所示:

   ViewBag.ListOfCodes = new SelectList(new[]
   {
       new { Id = "A", Name = "Code A" },
       new { Id = "B", Name = "Code B" },
       new { Id = "C", Name = "Code C" },
   }, "Id", "Name");

引用自:https://stackoverflow.com/questions/12112541