2011-11-13 11 views
2

ウェブブラウザに表示されたURLを最適化します。私はルーティングがそれには完璧だと知っていますが、私が望むようにそれが可能かどうかはわかりません。リストにプロジェクトのリストがあります。各プロジェクトにはID、名前、カテゴリがあります。詳細商品ページに移動するときは、URLは「/ category/name」である必要があります。 ActionLinkではID、カテゴリ、名前を渡し、Global.asaxでルーティングを調整することができます。私はすでにそれをしていますが、私はまだURLの残りの部分に連結しているIDを持っています。これは醜いです。ここでURLを調整してアドレスバーに表示する

は一例です:私の見解で

ActionLinkの:

@Html.ActionLink(@p.Name, "Detail", new { projectID = @p.ProjectID, category = @p.Category, name = @p.Name }) 

のGlobal.asax:

routes.MapRoute(null, 
    "{category}/{name}",  
    new { controller = "Project", action = "Detail" } 
); 

結果のURL:

enter image description here

ご覧のとおり、projectIDは常にURLの末尾に追加されます。どうすればそのような行動を避けることができますか?

ありがとうございました。

+0

カテゴリと名前で十分なら、なぜあなたのActionLinkにprojectIdを渡す必要がありますか? – counsellorben

+0

@counsellorben:アドレスバーのURLにカテゴリと名前が表示されます。詳細なビューに渡す適切なプロジェクトを取得するには、アクションコントローラでProjectIDが必要です。 – Bronzato

+0

その後、クリーンURLを提供するので、rouenの答えを受け入れるべきです。 – counsellorben

答えて

2
routes.MapRoute(null, 
"{category}/{name}/{projectID}",  
new { controller = "Project", action = "Detail", projectID = UrlParameter.Optional } 

)。

/INDUSTRIE/Mailing/16

が何をしたいということであるあなたを与えるのだろうか?

+0

いいえ、ビューでは、いくつかのもの(projectID、name、category)を持つActionLinkを作成したいと思います。 projectIDは、適切なプロジェクトを取得するためにアクションコントローラで使用されます。次に、URLにはprojectIDは表示されません。私はこれが不可能だと思う。 – Bronzato

+0

ありがとうございます:) – Bronzato

関連する問題