Одно из решений, которое я использовал, - это создание класса-оболочки, который содержит всю эту информацию, которую вы затем можете передать вспомогательному методу:
public class RouteWrapper
{
public string RouteName { get; set; }
public object RouteValues { get; set; }
public string LinkText { get; set; }
/* Other Properties pertaining to your data */
}
В оболочке у вас есть методы, определяющие свойства RouteName и RouteValues. В качестве альтернативы, если вам просто нужно варьироваться между контроллером и действием, вы можете настроить его таким образом. Хотя вы можете просто передать контроллер и действие в RouteValues и указать «Default» в качестве RouteName.
Тогда вы действительно сможете делать то, что вам нужно, прямо в представлении (если предположить, что класс RouteWrapper является моделью, синтаксис может быть немного неправильным, но вы поймете, что идея):
<%= Html.RouteLink(Model.LinkText, Model.RouteName, Model.RouteValues) %>
Надеюсь, это поможет.
EDIT:
Просто перечитайте и увидите, что вы не используете помощников.
Где бы вы ни создавали теги привязки, вы можете использовать свойство LinkText для внутреннего HTML, а в классе Routing есть метод, который поможет вам сгенерировать URL-адрес на основе имени маршрута и значений маршрута. Я выложу немного кода чуть позже, когда выясню, как это будет происходить.
ИЗМЕНИТЬ СНОВА:
ОК, так что это будет общий метод для создания тега привязки:
public string GenerateAnchorTag(ViewContext context, RouteWrapper model)
{
string url = RouteTable.Routes.GetVirtualPath(context, model.RouteName, new RouteValueDictionary(model.RouteValues));
return String.Format("<a href=\"{0}\">{1}</a>", url, model.LinkText);
}
Это то, что я бы попробовал (вам нужно включить System.Web.Routing и, возможно, System.Web.Mvc).
Для контекста вам нужно как-то захватить контекст запроса. Обычно я делаю это в расширении помощника, поэтому переменная помощника уже имеет контекст, который я могу передать. Если вы не используете помощников, вам нужно будет найти лучший способ передать RequestContext методу.