Вы можете восстановить URL, вытянув части существующего маршрута с помощью объекта RouteData
. Например, следующее будет отображать URL с контроллером и действием текущего маршрута:
<%=Url.RouteUrl(new { controller = ViewContext.RouteData.Values["controller"],
action = ViewContext.RouteData.Values["action"] }) %>
Для начала вы можете использовать что-то вроде пользовательского метода расширения, который генерирует URL с дополнительным параметром "page". Отрегулируйте при необходимости:
public static string UrlWithPage(this UrlHelper urlHelper, string name, int page)
{
string url = urlHelper.RouteUrl(
new {
controller = urlHelper.RequestContext.RouteData.Values["controller"],
action = urlHelper.RequestContext.RouteData.Values["action"],
id = urlHelper.RequestContext.RouteData.Values["id"],
page = page
}
);
return "<a href=\"" + url + "\">" + name + "</a>";
}
Это создаст правильно отформатированную ссылку на основе конфигурации маршрутизации, независимо от того, является ли страница реальным сегментом в URL или просто добавлена в виде строки запроса.