2013-04-23 67 views
1

目前我能夠從數據集中動態填充@Html.DropDownList()。下面的代碼適用於此。使用單選按鈕代替DropDownList

控制器

public static IEnumerable<SelectListItem> myList 
    { 
     get 
     { 
      ReportAPI.ReportsAPI ws = new ReportAPI.ReportsAPI(); 
      DataSet ds = ws.GetReportDataSet(userguid, reportguid); 
      DataTable dt = ds.Tables[0]; 

      List<SelectListItem> list = new List<SelectListItem>(); 
      foreach (DataRow dr in dt.Rows) 
      { 
       list.Add(new SelectListItem 
       { 
        Text = dr["text"].ToString(), 
        Value = dr["value"].ToString(), 
       }); 
      } 
      return list; 
     } 
    } 

public ActionResult NewSubscriber() 
    { 

     ViewData["subscriptionplanx"] = myList; 

     return View(); 
    } 

VIEW

@Html.DropDownList("subscriptionplanx") 

現在,而不是使用一個DropDownList,我想用單選按鈕代替。我將如何做到這一點?

+3

已經有上HtmlHelpers一些工作RadioButtonLists - 在這裏:http://jonlanceley.blogspot.com/2011/06/mvc3-radiobuttonlist -helper.html和http://stackoverflow.com/questions/2512809/has-anyone-implement-radiobuttonlistfort-for-asp-net-mvc – kd7 2013-04-23 18:00:01

+0

此外,你還應該使用「ViewModel」,而不是將東西扔進ViewData。鑑於ViewData的動態特性,ViewData非常笨拙,您必須使用HiddenFields將數據恢復到POST操作。只需爲有問題的視圖創建一個ViewModel,就可以消除ViewData中所有的麻煩。 – Graham 2013-04-23 20:24:45

回答

4

使用HtmlHelper可能是最優雅的解決方案。 無論如何,如果你正在尋找的東西簡單明瞭,試試這個:

@foreach(SelectListItem item in (IEnumerable<SelectListItem>)ViewData["subscriptionplanx"]) 
{ 
    <input type="radio" name="subscriptionplanx" value="@item.Value" />@item.Text <br /> 
} 
+0

好的。您的代碼在「創建」視圖中工作,但在編輯視圖中,未選中單選按鈕。 – oneNiceFriend 2016-05-22 06:09:42

+0

@oneNic​​eFriend你是說如果應該根據數據庫中的值選擇它? 'item'應該具有選定的狀態,所以只需使用它來設置'input'元素的'checked = true'屬性。 – 2016-05-22 16:32:56