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}"

正しくマッピングされません。

これらの 2 つの URL にアクセスすると、次のようになります。

https://localhost:44300/Search/Results/?query=er
https://localhost:44300/Search/Results/er

最初の作品のみ。

最初の URL の場合、Web ページは次のように表示されます。

Results.Query: er

2 つ目の表示は次のとおりです。

Results.Query:

私はこの例に従っています:コントローラーを追加すると、クエリパラメーターを適切にマップするためのルートを取得できません。

私は何を間違っていますか?

query名前を変更しqてクエリという単語が予約されているかどうかを確認するなど、多くのことを試しましたが、結果は同じです。

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 に答える