ASP.NET Core MVC视图向控制器传字符串参数遇空值求助
ASP.NET Core MVC ActionLink传递字符串参数为空的解决办法
你的问题核心是路由参数名称不匹配,导致模型绑定失败:
- 视图里的
@Html.ActionLink传递的是id=item.Name,但控制器Edit方法接收的参数是string name,两者名称不一致,ASP.NET Core无法自动映射参数值,所以拿到空值。
两种直接解决方式:
修改ActionLink的参数名,与控制器参数一致
把路由参数的键从id改成name,确保和控制器方法的参数名匹配:@Html.ActionLink("Edit", "Edit", "Parameters", new { name = item.Name })修改控制器方法的参数名,与ActionLink传递的键一致
如果你的路由模板里原本就用id作为参数占位符,直接把控制器参数改成string id:[HttpGet] public IActionResult Edit(string id) { // 这里使用id参数进行后续逻辑处理 }
额外说明(如果用视图模型接收)
如果要通过视图模型接收参数,需保证视图模型的属性名和传递的参数键完全一致:
比如定义视图模型:
public class ParametersEditViewModel { public string Name { get; set; } }
然后ActionLink传递对应键:
@Html.ActionLink("Edit", "Edit", "Parameters", new { Name = item.Name })
控制器方法接收:
[HttpGet] public IActionResult Edit(ParametersEditViewModel model) { // model.Name 就能拿到传递的值 }
验证方法
修改后点击Edit链接,查看浏览器地址栏的URL,应该能看到类似/Parameters/Edit?name=你的参数名的格式,说明参数已经正确传递到控制器。
内容的提问来源于stack exchange,提问作者Antero00
相关产品推荐
相关产品推荐

