路由参数在 MVC 中不起作用.为什么?如何解决
本文关键字:何解决 解决 为什么 参数 MVC 不起作用 路由 | 更新日期: 2023-09-27 18:30:29
我正在使用Visual Studio 2013的新.net空项目与mvc,我有这些...
控制器:
public string Search()
{
return HttpUtility.HtmlEncode("Search.");
}
public string Results(string query)
{
return HttpUtility.HtmlEncode("Results." + "Query: " + query);
}
路线:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Search", action = "Search", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Search",
url: "{controller}/{action}/{query}"
);
问题是查询参数
url: "{controller}/{action}/{query}"
未正确映射。
如果我转到这两个网址:
https://localhost:44300/Search/Results/?query=er
https://localhost:44300/Search/Results/er
只有第一个作品。
对于第一个 URL,网页显示:
Results.Query: er
第二个显示:
Results.Query:
我正在遵循此示例:添加控制器并且无法获取路由以正确映射查询参数。
我做错了什么?
我尝试了很多方法,例如将query
重命名为q
以查看是否保留了查询一词,但结果是相同的。
好的,修复了它。
默认路由错误。
正确的是:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{query}",
defaults: new { controller = "Search", action = "Search", query = UrlParameter.Optional }
);