gpt4 book ai didi

c# - Asp.net MVC 多个单选按钮组

转载 作者:行者123 更新时间:2023-11-30 23:31:08 25 4
gpt4 key购买 nike

enter image description here

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

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

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

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;}
}

enter image description here

最佳答案

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

让我们向您的 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,您无需像我们上面那样操作字段名称。

关于c# - Asp.net MVC 多个单选按钮组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34732027/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com