【问题标题】:Asp.net MVC multiple Radio button GroupsAsp.net MVC 多个单选按钮组
【发布时间】:2016-04-16 09:09:06
【问题描述】:

我正在处理从代码加载多个单选按钮组的页面。它可以是 2,3,4....,因此每个单选按钮组可以包含一个或多个单选按钮,如图所示。

工作流程是用户选择一个单选按钮,并且随着越来越多的单选按钮被点击,下面的网格会过滤结果,网格结果会减少,直到用户得到他想要的。

我需要捕获在控制器操作中单击的所有单选按钮。

public ActionResult index(IEnumerable<string> selectedRadioButtons)
{
}

这似乎不起作用。知道如何实现这一点。

型号

public class Person
{
     public string Name {get;set;}
     public IEnumerable<FavoriteGroup> Favorites {get;set;}
}

public class FavoriteGroup
{
    public string GroupName {get;set;}
    public IEnumerable<KeyValuePair> Options {get;set;}
}

【问题讨论】:

  • 你需要展示你的观点。

标签: c# asp.net-mvc radio-button


【解决方案1】:

只要您操作表单字段名称以匹配您的视图模型属性/层次结构,它就会起作用。

让我们为您的FavoriteGroup 类添加一个新属性来存储选定的单选按钮值。

public class FavoriteGroup
{
    public string GroupName { get; set; }
    public IEnumerable<KeyValuePair<int, string>> Options { get; set; }
    public int SelectedAnswer { set; get; }
}

在你看来,

@model YourNameSpaceHere.Person
@using (Html.BeginForm())
{
    var qCounter = 0;

    foreach (var favoriteGroup in Model.Favorites)
    {    
        <h4>@favoriteGroup.GroupName</h4>

        @Html.HiddenFor(f => f.Name)
        foreach (var option in favoriteGroup.Options)
        {
            @Html.Hidden("Favorites[" + qCounter + "].GroupName", favoriteGroup.GroupName)

            @Html.RadioButton("Favorites[" + qCounter + "].SelectedAnswer", option.Key)
            <span>@option.Value</span>

        }
        qCounter++;
    }    
    <input type="submit" />
}

假设您正在发送一个有效的 Person 对象,其属性填充了一些数据。

您的 HttpPost 操作方法将是,

[HttpPost]
public ActionResult Index(Person vm)
{
    foreach (var group in vm.Favorites)
    {
        var groupName = group.GroupName;
        var selected = group.SelectedAnswer;
       //do something with these 
    }
   // to do : Return something
}

另一种解决方案是使用 EditorTemplates,您不需要像我们上面那样操作字段名称。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-19
    • 2013-11-15
    • 1970-01-01
    • 1970-01-01
    • 2016-07-07
    • 1970-01-01
    • 2014-04-06
    • 1970-01-01
    相关资源
    最近更新 更多