2011-07-14 5 views
2

を返す:ASP.NET MVCのルーティングは、私は、次のルートのURLを取得しようとしていますヌル

RouteTable.Routes.MapRoute(
    null, 
    "cinema", 
    new 
{ 
    Controller = "CinemaListings", 
    Action = "ShowCinemaLandingPage", 
    SiteArea = "CinemaTimes", 
    MainLandingPage = true 
}); 

私はURLを生成するには、次の方法を試してみた:

<%:Url.Action("ShowCinemaLandingPage", "CinemaTimes", new { SiteArea = "CinemaTimes", MainLandingPage = true})%> 
<%:Url.RouteUrl(new { Controller = "CinemaTimes", Action = "ShowCinemaLandingPage", SiteArea = "CinemaTimes", MainLandingPage = true })%>  

私は」コントローラー名とアクション名だけを試してみました。返されたnullが返されます - 何が欠けていますか?

+0

「タイプ」とは何ですか?SiteArea?文字列パラメータですか?これにマップされているパラメータを使用してコントローラ/アクションを表示できますか? –

答えて

3

はない、この仕事をしていますか?

<%:Url.Action("ShowCinemaLandingPage", "CinemaListings", new { SiteArea = "CinemaTimes", MainLandingPage = true })%> 

それはあなたがController値でSiteAreaを混ぜてきたあなたのコードかららしいです。したがって、Url.Actionにコントローラ名を指定する代わりに、SiteAreaを2回(2番目のパラメータと追加のルート値として)指定しました。

+1

Argh!私はあなたに戻ってテストを与える*あなた自身を蹴る離れて歩く* –

+0

うん、私のせい。ありがとう:) –

-1

あなたのルートを理解するのは難しいです。まず第一に、問題の原因となる前に経験したヌルを渡して名前をつけていないし、そこにプレースホルダーがない。

これはコントローラーを付けないと機能しません。

<%:Url.Action("ShowCinemaLandingPage", "CinemaTimes", new { SiteArea = "CinemaTimes", MainLandingPage = true})%> 

ここではコントローラ名を渡していますが、コントローラ名がないので、パスは一致しません。

だから私は使用します - 最低限で - この:

RouteTable.Routes.MapRoute(
    "GiveMeSomeNameWillYa?", 
    "{Controller}/{Action}", 
    new 
{ 
    Controller = "CinemaListings", 
    Action = "ShowCinemaLandingPage", 
    SiteArea = "CinemaTimes", 
    MainLandingPage = true 
}); 
+0

着信要求に対してはルートが機能します。/cinemaへのリクエストは、 'CinemaListings'コントローラの' ShowCinemaLandingPage'によって処理されます。私はこの行動を維持する必要があります。私はルート名を追加しようとしましたが、これは効果がありませんでした。 –

+0

-1ルート名は完全にオプションです。 URLテンプレートには、デフォルト値が指定されている場合、コントローラートークンとアクショントークンは必要ありません。 –

関連する問題