HTTP错误400.0-错误的请求

本文关键字:错误 请求 HTTP | 更新日期: 2023-09-27 18:26:00

请帮助我解决代码中的ASP.NET MVC 5错误

用于查看用户详细信息的字符串参数似乎对该方法不可用,即使它位于url中,因此该方法返回HTTP错误400.0-错误请求

这是我的RouteConfig.cs

 public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        routes.MapRoute(
           name: "Residents",
           url: "{controller}/{action}/{id}",
           defaults: new { controller = "Residents", action = "Details", id ="UserId"}
       );
        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }

这就是方法:

     // GET: Residents/Details/5
    //[ActionName("Resident-details")]
    public ActionResult Details(string username)
    {
        if (string.IsNullOrWhiteSpace(username))
        {
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        }
      ApplicationUser user = db.Users.Where(u => u.UserName.Equals(username, StringComparison.CurrentCultureIgnoreCase)).FirstOrDefault();
            if (user == null)
            {
                return HttpNotFound();
            }
        ViewBag.user = user;
        return View();
    }

这是生成的url

http://localhost:59686/Residents/Details/8b422e1d-12cf-42c2-8606-32123b3dc577

但它返回了一个错误的请求。即使我这样做return内容(用户名)在该方法的早期,它不返回任何结果。不显示任何内容,表示该参数对该方法不可见。

请给我一个解决这个问题的

感谢

HTTP错误400.0-错误的请求

您的路由配置不正确。您的方法没有名为id的参数,但您仍在路由配置中定义它。

为了解决这个问题,更改您的居民路线如下:

routes.MapRoute(
       name: "Residents",
       // only apply route to Residents/Details/your-user-name
       // make sure to use parameter name {username}, like in your method
       url: "Residents/Details/{username}",
       defaults: new { controller = "Residents", action = "Details"}

因此MVC的默认模型绑定需要一个int参数来将您的url映射到操作方法参数。

或者,您可以使用以下url:http://host/Controller/Details?username=8b422e1d-12cf-42c2-8606-32123b3dc577

或者另一个选项是尝试使用POST方法提交数据,该方法将包含用户名值。