0

コントローラーにアクションが存在する場合、asp.net-mvc はカスタム マップ ルートを処理する前にそのアクションにルーティングしますか?

例。

次のコントローラーがあるとします

public class ShopController : Controller
{
    public ActionResult Shop(Category category)
    {
        // returns some result
    }

    public ActionResult CartItemCount()
    {
        // returns some result
    }
}

そして、ルート コレクションに次のルートを登録しました。

public static void RegisterRoutes(RouteCollection routes)
{
    routes.MapRoute(
        "Shop",
        "Shop/{category}",
        new { controller = "Shop", action = "Shop", category = UrlParameter.Optional } // Parameter defaults
    );
}

次の URL を使用するとどうなりますか?
http://www.example.com/Shop/CartItemCount

編集

マッピングされたルートの名前は、それがどのように処理されたかに関連していると考えて混乱しました. そうではありません。ルートの名前に一致する URL に関しては問題ありません。

結局のところ、例で示したルートのすぐ上に別のルートが定義されていました。このルートは、名前は異なりますが、一致していました。私が言ったように、ルートに付けられた名前が何らかの形でマッチングに影響を与えると思ったので、それをチェックすることさえ考えませんでした.

4

1 に答える 1

1

ルートは、使用するアクションを決定します。ルートが定義されていない場合は、アクションが存在してもヒットしません。RouteDebuggerをインストールして、URL を起動します。一致するすべてのルートと、実際に使用されたルートが表示されます。

于 2012-12-28T21:08:06.200 に答える