1

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

我正在关注此示例:添加控制器并且无法获取正确映射查询参数的路由。

我究竟做错了什么?

我已经尝试了很多东西,例如重命名queryq以查看是否保留了查询一词,但结果是相同的。

4

1 回答 1

0

好的。解决它。

默认路由是错误的。

正确的是:

routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{query}",
                defaults: new { controller = "Search", action = "Search", query = UrlParameter.Optional }
            );
于 2013-09-05T18:23:39.757 回答