2013-04-23 64 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