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

如何向HttpGet ActionResult传值?URL访问404错误解决方案咨询

解决HttpGet ActionResult参数传递的404问题

兄弟,你碰到的HTTP 404错误是因为当前的URL格式和ASP.NET MVC默认的路由规则不匹配,导致框架找不到对应的UpdatePassword Action。下面给你两种实用的解决思路:

方法一:改用查询字符串传递参数(最简单,无需修改路由)

直接把URL改成查询字符串格式,MVC会自动把参数绑定到Action的对应参数上:

http://localhost:53081/Dashboard/UpdatePassword?Email=John@gmail.com&Token=809a5bc2-5f1b-ce5b0203ff1b

这种方式不需要改动任何路由配置,你的现有Action代码完全可以直接接收这两个参数,测试一下应该就能正常访问了。

方法二:自定义路由匹配现有URL格式

如果你坚持想用/Email=xxx/Token=xxx这种路径式的参数传递,需要调整路由规则:

方式A:全局路由配置(在RouteConfig.cs中)

在默认路由之前添加一条自定义路由,确保它先被匹配:

routes.MapRoute(
    name: "UpdatePasswordRoute",
    url: "Dashboard/UpdatePassword/Email/{Email}/Token/{Token}",
    defaults: new { controller = "Dashboard", action = "UpdatePassword" }
);

// 原有的默认路由放在后面
routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

方式B:使用特性路由(MVC5及以上版本支持)

直接给你的UpdatePassword Action添加路由特性,这样就不用修改全局路由了:

[HttpGet]
[Route("Dashboard/UpdatePassword/Email/{Email}/Token/{Token}")]
public ActionResult UpdatePassword(string Email, string Token)
{
    using (var db = new MyappEntities())
    {
        return View();
    }
}

注意:如果用特性路由,要确保项目已经启用了特性路由(一般在RouteConfig里有routes.MapMvcAttributeRoutes();这行代码)。

关键提醒

不管用哪种方式,都要确保路由规则的顺序——自定义路由要放在默认路由前面,不然默认路由会先匹配,还是会出现404。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:14:17