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
相关产品推荐
相关产品推荐

