ASP.NET MVC如何让控制器接收视图表单提交的参数并正常返回显示
问题解决方法
问题原因
- 控制器
Search方法默认仅响应GET请求,而表单指定的提交方式为POST,请求无法正确匹配到对应Action - 表单输入框的
name属性为licensePlate,控制器方法参数名为result,不符合ASP.NET模型绑定规则,参数无法被正确赋值,因此返回空内容。
修复步骤
- 给
Search方法添加[HttpPost]特性,匹配表单的POST提交方式 - 将控制器方法的参数名修改为和表单
name属性一致的licensePlate,让模型绑定可以正常读取提交的内容
修改后的控制器代码如下:
public class MainPageController : Controller { private readonly ILogger<MainPageController> _logger; private readonly UnblockMeContext _dbContext; public MainPageController(ILogger<MainPageController> logger,UnblockMeContext appData) { _logger = logger; _dbContext = appData; } public IActionResult Index() { var users = _dbContext.Users.ToList(); return View(users); } // 新增HttpPost特性,匹配表单POST提交 [HttpPost] // 参数名修改为和表单input的name属性一致 public IActionResult Search(string licensePlate) { return Content(licensePlate); } }
可选扩展
如果需要同时支持GET方式提交搜索(比如直接通过地址栏参数触发搜索),可以给Search方法同时添加[HttpGet]特性即可。
内容的提问来源于stack exchange,提问作者Robert
相关产品推荐
相关产品推荐

