路由参数在 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以查看是否保留了查询一词,但结果是相同的。

路由参数在 MVC 中不起作用.为什么?如何解决

好的,修复了它。

默认路由错误。

正确的是:

routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{query}",
                defaults: new { controller = "Search", action = "Search", query = UrlParameter.Optional }
            );