/Product/22/Product-Name のようなHtml.ActionLink
href を含むアンカー タグを返すために使用したいと考えています。Productはコントローラ名、22は ID、Product-Nameはタイトルです。
私のglobal.asaxでは、次のルートを設定しました:
routes.MapRoute(
"ProductRoute", // Route name
"Product/{id}/{title}", // URL with parameters
new { controller = "Product", action = "Index", id = UrlParameter.Optional });
次のコードを使用してみました
@Html.ActionLink(model.Name, null, "Product",
new { id = model.Id, title = model.Name.Replace(" ","-") }, null)
しかし、それはProduct/Browse/22?title=Product-Nameをもたらします。このコードは、CatalogコントローラーのBrowseアクションによって返されたBrowseビューにあり、そのため、間にあるBrowseを取得します。
不思議なことに、 Home ControllerのIndexアクションによって返されるIndex View でも同じコードが正常に機能します。この違いの理由は何ですか?. 何か足りないのでしょうか、それとも Asp.net MVC3 のバグですか?
指定した URL 形式を実現するにはどうすればよいですか。当面の間、私はこのコードを使用しています
<a href="/Product/@product.Id/@product.Name.Replace(" ","-")">@product.Name</a>