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

ASP.NET Core 6 MVC中如何通过动态下拉列表提交选中项

解决ASP.NET Core 6 MVC下拉菜单选中Recette项获取ID的问题

一、修复视图代码

当前视图中按钮的value是硬编码的"1",这是无法传递正确ID的核心问题,需替换为当前item的Id,同时明确表单提交方式:

@model YourNamespace.RecettesViewModel <!-- 替换为你的视图模型命名空间 -->
<div class="col-md-3">
    <div class="dropdown">
        <button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton1" data-bs-toggle="dropdown" aria-expanded="false">
            Recette séléctionnée
        </button>
        <ul class="dropdown-menu dropdown-menu" aria-labelledby="dropdownMenuButton1">
            @foreach (var item in Model.Recette)
            {
                <li>
                    @using (Html.BeginForm("RecetteSlct", "Recettes", FormMethod.Post))
                    {
                        <!-- 将value绑定为当前item的Id,提交时传递选中项ID -->
                        <button type="submit" name="selectedId" class="dropdown-item" value="@item.Id">@Html.DisplayFor(modelItem => item.Name)</button>
                    }
                </li>
            }
        </ul>
    </div>
</div>

二、修改控制器代码

给RecetteSlct方法添加参数接收提交的ID,同时加上[HttpPost]特性明确接收POST请求,另外要确保Index方法正确从数据库获取Recette列表并传递给视图:

using Microsoft.EntityFrameworkCore;

public class RecettesController : Controller
{
    private readonly YourDbContext _context; // 替换为你的数据库上下文类

    public RecettesController(YourDbContext context)
    {
        _context = context;
    }

    public IActionResult Index()
    {
        // 从数据库获取所有Recette数据,封装到视图模型传递给视图
        var viewModel = new RecettesViewModel
        {
            Recette = _context.Recette.ToList()
        };
        return View(viewModel);
    }

    [HttpPost]
    public ActionResult RecetteSlct(int selectedId)
    {
        // 此处已获取到选中的Recette ID,可执行后续后端逻辑
        // 示例:打印ID验证
        Console.WriteLine($"选中的Recette ID:{selectedId}");

        return RedirectToAction("Index");
    }
}

三、补充视图模型(可选但推荐)

创建强类型视图模型,避免直接传递集合类型:

public class RecettesViewModel
{
    public List<Recette> Recette { get; set; } = new List<Recette>();
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 06:43:10