2017-01-13 50 views
0

私はリストのためにいくつかのURLを生成します。idが特定の文字列と一致すると、デフォルトの "article"以外の別のルートを呼び出すことがあります。 これを管理しました。 私は3つのルートを手に入れました。ASP.NET MVCルーティング:同じページの2つのルート、同じURLを与える方法?

routes.MapRoute(
      name:="ArticleToPage", 
      url:="article-MySecondPage", 
      defaults:=New With {.Controller = "MySecondPage", .Action = "MySecondPage"} 
     ) 
    routes.MapRoute(
     name:="MySecondPage", 
     url:="MySecondPage", 
     defaults:=New With {.controller = "MySecondPage", .action = "MySecondPage"} 
    ) 

routes.MapRoute(
       name:="Article", 
       url:="article-{id}", 
       defaults:=New With {.Controller = "Page", .Action = "Article", .id = UrlParameter.Optional} 
      ) 

これはうまく動作します

しかし、右のURLを持つために、 "AticleToPage"の代わりに "MySecondPage"ルートを呼び出す方法がありますか? 私は行為といくつかのことを指定しようとしましたが、私はどこにもいません。道を知っていますか?

EDIT私は明確なアップが行われていない可能性があります

私は同じページに私を送るそれらのルートに2 URLをリンクしています

Site/MySecondPage 
Site/Article-MySecondPage 

私が呼ぶ「サイト/ Article-MySecondPage "実際に私の" MySecondPage "ルートに経路を変更するか、ルートコール内のURLを変換するようにします(しかし、それは可能だと思います)。" Site/MySecondPage "

答えて

0

あなたのURLの両方:

Site/MySecondPage 
Site/Article-MySecondPage 

が作動しなければなりません。つまり、これらの各URLを呼び出すとき、アプリケーションはMySecondPageControllerというコントローラー内でアクションMySecondPageを実行する必要があります。

何がしたいことはには、2番目のURLでにURLを生成している場合、あなたが一致するルートの名前を渡すことができるように@Html.RouteLinkではなく@Html.ActionLinkを使用する必要があります。

@Html.RouteLink(
    linkText:= "My Second Page 1", 
    routeName:= "ArticleToPage", 
    routeValues:= New With {.Controller = "MySecondPage", .Action = "MySecondPage"}) 
@Html.RouteLink(
    linkText:= "My Second Page 2", 
    routeName:= "MySecondPage", 
    routeValues:= New With {.Controller = "MySecondPage", .Action = "MySecondPage"}) 
0

経路はどのように順番に呼び出されるので、「ArticleToPage」は常に「MySecondPage」の前に呼び出されます。

+0

私はすでに試したましたが、それは私が「ArticleToPage」 – KryunoKijy

+0

に合わせ変更したいURL以来トンの仕事をdoesnのが、両方のルートには、同じコントローラとアクションを呼び出し、そのまま、または余分な属性 –

+0

また、あなたが望むURLのようなものでなければなりません。例: 'routes.MapRoute( 名前:="記事 "、 URL:=" {コントローラ}/{アクション} - {ID} "、 デフォルト:=新しい{コントローラ="ページ "、アクション="記事 " 、id = UrlParameter.Optional} ); ' –

関連する問題