如何从Bootstrap菜单项向ASP.NET MVC控制器传递参数
实现方案
你的需求完全可以实现,但是你预想的asp-action="Index(0)"写法不符合ASP.NET Core Tag Helper的语法规则,正确实现步骤如下:
1. 修改前端下拉菜单代码
使用asp-route-[参数名]属性传递自定义参数,示例代码:
<div class="dropdown-menu" aria-labelledby="navbarDropdown"> <a class="dropdown-item" asp-controller="Question" asp-action="Index" asp-route-chapterId="0">Salesperson questions - Chapter 1</a> <a class="dropdown-item" asp-controller="Question" asp-action="Index" asp-route-chapterId="1">Salesperson questions - Chapter 2</a> </div>
2. 调整QuestionController的Index方法
在Action中声明对应参数接收前端传递的数值即可:
// 位于QuestionController.cs中 public IActionResult Index(int chapterId = 0) { // 这里可以根据chapterId的值加载对应章节的试题内容 // chapterId为0对应第一章,为1对应第二章 return View(); }
补充说明
如果你使用的是ASP.NET Core默认路由规则{controller=Home}/{action=Index}/{id?},也可以直接把参数名改为id,对应前端写asp-route-id="0",不需要额外修改路由配置。
内容的提问来源于stack exchange,提问作者Jonathan Small
相关产品推荐
相关产品推荐

