Html.ActionLink эквивалент определенного формата URL - PullRequest
0 голосов
/ 07 января 2012

Я хочу использовать Html.ActionLink для возврата тега привязки с href, например / Product / 22 / Product-Name , где Product - это имя моего контроллера, а 22 - мой идентификатор, а 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 . Этот код находится в Просмотр Просмотр, возвращаемый Просмотр действие контроллера Каталог , и поэтому он выбирает Просмотр между ними.

Как ни странно, тот же код прекрасно работает в Index View, возвращаемом действием Index контроллера Home . В чем причина этой разницы? , Я что-то упустил или это ошибка в Asp.net MVC3.

Что я должен сделать, чтобы достичь моего заявленного формата URL. А пока я использую этот код

<a href="/Product/@product.Id/@product.Name.Replace(" ","-")">@product.Name</a>

1 Ответ

3 голосов
/ 07 января 2012

убедитесь, что вы определили пользовательский маршрут до маршрута по умолчанию, и попробуйте

@Html.ActionLink(model.Name,
                  "Index",
                 new {controller="Product", id = model.Id, title = model.Name.Replace(" ","-") }, null)

, первый параметр - DisplayName, второй - имя ActionResult, а затем RouteValues ​​

...