如何通过HTML类(Razor语法)在MVC视图中创建RadioButtonList

Ami*_*978 1 asp.net-mvc-3

我需要在RadioButtonList中显示我的列表,有点像这样:@ Html.RadioButtonList("FeatureList",新的SelectList(ViewBag.Features))但是你知道HTML Helper类中没有RadioButtonList类,当我使用时: @ Html.RadioButton("FeatureList",新的SelectList(ViewBag.Features))它显示了一个空白列表!//控制器代码:

 public ActionResult Rules()
        {

            ViewBag.Features = (from m in Db.Features where m.ParentID == 3 select m.Name);
            return View();

        }
Run Code Online (Sandbox Code Playgroud)

Dav*_*Fox 12

Html.RadioButton不接受(string, SelectList)参数,所以我认为空白列表是预期的;)

你可以1)

使用foreach过你的单选按钮值模型,并使用Html.RadioButton(string, Object)过载来遍历你的价值观

// Options could be a List<string> or other appropriate 
// data type for your Feature.Name
@foreach(var myValue in Model.Options) {
    @Html.RadioButton("nameOfList", myValue)
}
Run Code Online (Sandbox Code Playgroud)

或2)

为列表编写自己的帮助方法 - 可能看起来像这样(我从来没有写过这样的,所以你的里程可能会有所不同)

public static MvcHtmlString RadioButtonList(this HtmlHelper helper, 
    string NameOfList, List<string> RadioOptions) {

    StringBuilder sb = new StringBuilder();

    // put a similar foreach here
    foreach(var myOption in RadioOptions) {
        sb.Append(helper.RadioButton(NameOfList, myOption));
    }

    return new MvcHtmlString(sb.ToString());
}
Run Code Online (Sandbox Code Playgroud)

然后在您的视图中调用您的新助手(假设Model.Options仍然是List或其他适当的数据类型)

@Html.RadioButtonList("nameOfList", Model.Options)
Run Code Online (Sandbox Code Playgroud)