【问题标题】:Use Radio Buttons instead of DropDownList使用单选按钮而不是 DropDownList
【发布时间】:2013-04-17 01:23:44
【问题描述】:

目前我能够从数据集中动态填充@Html.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();
    }

查看

@Html.DropDownList("subscriptionplanx")

现在,我不想使用 DropDownList,而是使用单选按钮。我该怎么做?

【问题讨论】:

  • 在 HtmlHelpers 上为 RadioButtonLists 做了一些工作 - 这里:jonlanceley.blogspot.com/2011/06/…stackoverflow.com/questions/2512809/…
  • 此外,您还应该使用“ViewModel”而不是向 ViewData 扔东西。鉴于 ViewData 的动态特性,它确实很尴尬,而且无论如何您都必须使用 HiddenFields 将数据恢复到 POST 操作中。只需为有问题的视图创建一个 ViewModel,您就可以使用 ViewData 消除所有铸造麻烦。

标签: c# asp.net-mvc


【解决方案1】:

使用HtmlHelper 可能是最优雅的解决方案。 无论如何,如果你正在寻找一些简单的东西,试试这个:

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

【讨论】:

  • 好的。您的代码在创建视图中有效,但在编辑视图中,未选中单选按钮。
  • @oneNic​​eFriend 您的意思是是否应该根据数据库中的值来选择它? item 应该处于选中状态,所以只需使用它来设置input 元素的checked=true 属性。
猜你喜欢
  • 2013-07-06
  • 2021-05-05
  • 2013-04-10
  • 2020-04-28
  • 2020-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多