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

ASP.NET MVC View中获取id参数时Context.Request.Query返回null求助

解决ASP.NET Core中路由参数无法通过Query获取的问题

嘿,我明白你遇到的问题了——你通过路由传递了id参数,但无论是在控制器里用HttpContext.Request.Query["id"],还是在View里尝试获取,都返回null。这其实是个很常见的误区,咱们一步步来解决:

为什么Query["id"]会返回null?

首先得搞清楚:你的请求地址localhost:1000/MyController/Getuser/65190907-1145-7049-9baa-d68d44b1ad06里的id是路由参数,它匹配了你Startup中配置的{controller=Home}/{action=Index}/{id?}模板,属于URL路径的一部分;而Query集合是用来获取URL末尾?key=value这种格式的查询字符串参数的,所以自然拿不到路由里的id。

几种解决方法

方法1:控制器把参数传递给View

最简单的方式就是在控制器里先拿到绑定好的id参数,再把它传递给View。你可以用ViewBag、ViewData或者强类型模型:

public ActionResult Getuser(Guid id) {
    // 用ViewBag传递参数
    ViewBag.UserId = id;
    // 也可以用ViewData
    // ViewData["UserId"] = id;
    return View();
}

然后在View里直接使用:

<p>用户ID:@ViewBag.UserId</p>

方法2:在View中直接从路由数据获取

如果不想通过控制器传递,也可以在View里直接从路由集合中提取参数:

@{
    Guid userId = Guid.Empty;
    // 先判断路由参数是否存在,再安全转换类型
    if (Context.Request.RouteValues.TryGetValue("id", out var idValue) 
        && Guid.TryParse(idValue?.ToString(), out userId))
    {
        // 这里就可以使用userId变量了
    }
}
<p>用户ID:@userId</p>

额外提示:如果想用Query获取该怎么做?

要是你非要用Query["id"]拿到值,那得把请求地址改成查询字符串格式:localhost:1000/MyController/Getuser?id=65190907-1145-7049-9baa-d68d44b1ad06,不过这就不符合你当前的路由配置逻辑了,不推荐这么改。

内容的提问来源于stack exchange,提问作者KevinBui

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:23:51