2011-06-20 9 views
0

:私はメーカーのリストに基づいて/製品/パーツリスト/ Manufacturer1に製品/パーツリスト/から行くのリンクを作成しようとしていますMVCリンクの作成

routes.MapRoute(
     "PartListRoute", 
     "Products/PartList/{Manufacturer}/{Product}/{PartNumber}", 
     new { controller = "PartList", action = "Index", Manufacturer = UrlParameter.Optional, Product = UrlParameter.Optional, PartNumber = "" } 
    ); 

は、データベースから引っ張りました。 mfr.Nameは製造元の名前です。

ルートは以下の

  • /製品/パーツリスト/
  • /製品/パーツリスト/ Manufacturer1/
  • /製品/パーツリスト/ Manuracturer3 /製品1/
  • /のようなURLにつながるはず

    製品/部品リスト/マニュファクチャラー2 /製品4/DN-438

最も近いのは

です
@Html.RouteLink(mfr.Name, "PartListRoute", new { Manufacturer = mfr.Name}) 

これは、メーカー名をテキストに置きますが、URLに追加しません。私は、私が路線とリンクについて何かを仮定していると感じているが、これは真実ではない。

実際にルートを使用して正しい形式で新しいリンクを生成する方法はありますか?

答えて

0

誰かがこの質問に遭遇した場合、私はこの記事を最後に見つけました。これは、連続したオプションのURLパラメータがあるときにバグがあることを示しています。

http://haacked.com/archive/2011/02/20/routing-regression-with-two-consecutive-optional-url-parameters.aspx

私は完全な説明を理解して主張するが、すべての元のコントローラに向いて追加のルートを作成する問題を修正しているようだしません。

 routes.MapRoute(
      "PartListRoute", 
      "Products/PartList/{Manufacturer}", 
      new { controller = "PartList", action = "Index", Manufacturer = UrlParameter.Optional } 
     ); 

     routes.MapRoute(
      "PartListRoute2", 
      "Products/PartList/{Manufacturer}/{Product}", 
      new { controller = "PartList", action = "Index", Manufacturer = UrlParameter.Optional, Product = UrlParameter.Optional } 
     ); 

     routes.MapRoute(
      "PartListRoute3", 
      "Products/PartList/{Manufacturer}/{Product}/{PartNumber}", 
      new { controller = "PartList", action = "Index", Manufacturer = UrlParameter.Optional, Product = UrlParameter.Optional, PartNumber = "" } 
     ); 
関連する問題