route参数在mvc中不起作用。为什么?怎么修?

时间:2013-09-05 18:15:16

标签: c# asp.net-mvc asp.net-mvc-routing visual-studio-2013

我正在使用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

只有第一部作品。

对于网页显示的第一个网址:

Results.Query: er

第二个显示:

Results.Query:

我正在关注此示例:Adding a controller并且无法获取正确映射查询参数的路由。

我做错了什么?

我尝试过很多方法,比如将query重命名为q,看看是否保留了单词查询,但结果是一样的。

1 个答案:

答案 0 :(得分:0)

确定。修好了。

默认路线错误。

正确的是:

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