You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将单选按钮数组传递至.NET Core 6 Controller

解决方案

方案1:仅传递选中的单选按钮(推荐)

这种方式更高效,只传输用户实际选择的内容,减少不必要的数据量。

前端JavaScript代码

先筛选出所有被选中的单选按钮,再构造成结构化的对象数组:

// 获取所有选中的单选按钮
const selectedOptions = document.querySelectorAll('.js-filter-item:checked');
// 转换为包含关键信息的对象数组
const selectedData = Array.from(selectedOptions).map(el => ({
    id: el.id,
    name: el.name,
    value: el.value
}));
// 序列化为JSON字符串
const jsonData = JSON.stringify(selectedData);

// 通过fetch发送到后端(也可以用axios等工具)
fetch('/YourController/HandleSelectedOptions', {
    method: 'POST',
    headers: {
        'Content-Type': 'application/json'
    },
    body: jsonData
});

后端C#控制器处理

先创建对应的数据模型来接收参数:

public class SelectedRadioItem
{
    public string Id { get; set; }
    public string Name { get; set; }
    public string Value { get; set; }
}

然后在控制器中直接接收这个模型数组:

[HttpPost]
public IActionResult HandleSelectedOptions([FromBody] List<SelectedRadioItem> selectedItems)
{
    // 直接遍历处理选中项
    foreach (var item in selectedItems)
    {
        // 示例逻辑:获取选中项的分组名和值
        var groupName = item.Name;
        var selectedValue = item.Value;
    }
    return Ok();
}

方案2:传递所有单选按钮的状态(含未选中)

如果确实需要获取全部选项的状态,调整前端代码,将每个单选按钮转为包含完整信息的对象:

前端JavaScript代码

const allOptions = document.querySelectorAll('.js-filter-item');
const allOptionsData = Array.from(allOptions).map(el => ({
    id: el.id,
    name: el.name,
    value: el.value,
    checked: el.checked
}));
const jsonData = JSON.stringify(allOptionsData);

// 发送请求逻辑同方案1

后端C#控制器处理

创建对应的数据模型:

public class RadioItem
{
    public string Id { get; set; }
    public string Name { get; set; }
    public string Value { get; set; }
    public bool Checked { get; set; }
}

控制器接收并筛选选中项:

[HttpPost]
public IActionResult HandleAllOptions([FromBody] List<RadioItem> allItems)
{
    // 筛选出选中的选项
    var selectedItems = allItems.Where(item => item.Checked).ToList();
    // 后续处理逻辑
    return Ok();
}

之前代码的问题说明

你之前把每个单选按钮转为数组[el.name, el.value, el.checked],虽然这是有效的JSON,但结构不够直观,后端用string接收后需要手动解析拆分,不如用对象数组直接绑定到C#模型,处理起来更简洁高效。


内容的提问来源于stack exchange,提问作者GordonS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 03:07:49