Ответ 1
Не уверен, что я действительно четко понял ваш вопрос, но позвольте мне попробовать.
Чтобы создать расширение 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);