неправильный URL с помощью html.actionlink

#asp.net-mvc #asp.net-mvc-3 #razor #vb.net-2010

#asp.net-mvc #asp.net-mvc-3 #бритва #vb.net-2010

Вопрос:

Я был сделан системой подкачки. Все в порядке. После нажатия 2-й страницы все ссылки на главную страницу меняются.

 @Html.ActionLink("Home page", "Index", "Home") //This is standard routing without values.
 

Я добавил ссылки подкачки в конец страницы.

 @Html.ActionLink("2", "Index", "Home", New With {.id = 2}, Nothing) //This works good too.
 

Моя проблема заключается в том, когда я нажимаю на 2-ю или более страницу (например: www.site.com/Home/Index/2 ) все мои ссылки на главную страницу преобразуются в

 <a href="/Home/Index/2">Home page</a>
 

то же самое.
Как я могу решить эту проблему?

Комментарии:

1. с каким текущим URL-адресом, на котором вы находитесь, у вас возникли проблемы?

2. @Html. Команды ActionLink(«Домашняя страница», «Индекс», «Главная страница») генерируют <a href=»/Home/Index/2″>Домашнюю страницу</a> с теми же значениями.

Ответ №1:

Когда вы нажмете на 2-ю страницу {.id = 2} , она станет частью ваших RouteData. И потому, что ваша маршрутизация, вероятно, выглядит так: (в Gloabal.asax)

  routes.MapRoute( _
        "Default", _
        "{controller}/{action}/{id}", _
        New With {.controller = "Home", .action = "Index", .id = UrlParameter.Optional} _
    )
 

ASP.NET MVC будет использовать этот маршрут для сгенерированных ссылок. Таким образом, он будет включать Id = 2. Чтобы исправить это, вам нужно явно переопределить его, когда он не нужен:

 @Html.ActionLink("Home page", "Index", "Home", New With {.id = ""}, Nothing)