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内容(用户名)在该方法的早期,它不返回任何结果。不显示任何内容,表示该参数对该方法不可见。
请给我一个解决这个问题的
感谢
您的路由配置不正确。您的方法没有名为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方法提交数据,该方法将包含用户名值。