2

MVC ルーティング システムを理解しようとしていますが、期待どおりに機能しません。

このルートが定義されているとします:

context.MapRoute(
        "NewCertificates",
        "NewQuote/GetCertificate/{date}/{id}",
        new { area = "NewQuote", controller = "Quote", action = "GetCertificate" },
        new[] { "Acme.Areas.NewQuote.Controllers" }
    );

そして、私のビューのこのアクションリンク:

@Html.ActionLink("Click Here", "GetCertificate", new { controller = "Quote", area = "NewQuote", date = "20121219", id = "acme" })

生成された URL は次のようになると思います。

http://localhost:50582/NewQuote/GetCertificate/20121219/acme

しかし、代わりに私は得る:

http://localhost:50582/NewQuote/GetCertificate/acme?date=20121219

なぜこれが起こっているのか誰にも教えてもらえますか?

上記のルートより前のルートを表示するように編集します。

        context.MapRoute(
                "NewQuoteValidation",
                "NewQuote/Validation/{action}/{id}",
                new { area = "NewQuote", controller = "Validation", action = "IsImeiAvailable", id = UrlParameter.Optional },
                new[] { "Acme.Areas.NewQuote.Controllers" }
            );

        context.MapRoute(
                "NewAjax",
                "NewQuote/Ajax/{action}/{id}",
                new { area = "NewQuote", controller = "Ajax", action = "Index", id = UrlParameter.Optional },
                new[] { "Acme.Areas.NewQuote.Controllers" }
            );

        context.MapRoute(
                "NewQuote",
                "NewQuote/{action}/{id}",
                new { area = "NewQuote", controller = "Quote", action = "Select", id = UrlParameter.Optional },
                new[] { "Acme.Areas.NewQuote.Controllers" }
            );
4

2 に答える 2

4

別の以前のルート定義が定義の所有権を主張している可能性がありActionLinkます。あなたは試してみたいかもしれません:

  1. 「NewCertificates」ルート定義をリストの最初またはそれ以上に配置します。
  2. ルートに基づいて明示的にリンクを構築し、Html.RouteLink

@Html.RouteLink("Click Here", 
      // route name
    "NewCertificates", 
      // route attributes
    new { controller = "Quote", area = "NewQuote", date = "20121219", id = "acme" })
于 2012-12-19T20:36:47.817 に答える
0

あなたのルートを呼び出すためにこれを試してください:

@Html.RouteLink("ここをクリック", "NewCertificates", new { controller = "Quote", area = "NewQuote", id = "acme" })

于 2012-12-20T09:13:24.763 に答える