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

ASP.NET Core MVC视图向控制器传字符串参数遇空值求助

ASP.NET Core MVC ActionLink传递字符串参数为空的解决办法

你的问题核心是路由参数名称不匹配,导致模型绑定失败:

  • 视图里的@Html.ActionLink传递的是id=item.Name,但控制器Edit方法接收的参数是string name,两者名称不一致,ASP.NET Core无法自动映射参数值,所以拿到空值。

两种直接解决方式:

  1. 修改ActionLink的参数名,与控制器参数一致
    把路由参数的键从id改成name,确保和控制器方法的参数名匹配:

    @Html.ActionLink("Edit", "Edit", "Parameters", new { name = item.Name })
    
  2. 修改控制器方法的参数名,与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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 14:17:12