Не уверен, что я действительно ясно понял ваш вопрос, но позвольте мне попробовать.
Чтобы создать расширение HtmlHelper, как вы описали, попробуйте что-то вроде:
using System;
using System.Web.Mvc;
using System.Web.Mvc.Html;
namespace Something {
public static class PageLinkHelper
{
public static string PageLink(
this HtmlHelper helper,
string linkText, string actionName,
string controllerName, object routeValues,
object htmlAttributes)
{
return helper.ActionLink(
linkText, actionName, controllerName,
routeValues, htmlAttributes);
}
}
}
Что касается вашего вопроса о получении URL-адреса из класса, зависит от того, какого класса вы его реализуете. Например, если вы хотите получить текущий контроллер и действие из расширения HtmlHelper, вы можете использовать:
string currentControllerName = (string)helper.ViewContext
.RouteData.Values["controller"];
string currentActionName = (string)helper.ViewContext
.RouteData.Values["action"];
Если вы хотите получить его из контроллера, вы можете использовать свойства / методы из базового класса (Controller) для построения URL. Например:
var url = new UrlHelper(this.ControllerContext.RequestContext);
url.Action(an_action_name, route_values);