Зазвичай в режимі перегляду ASP.NET можна використовувати таку функцію, щоб отримати URL-адресу (не an <a>
):
Url.Action("Action", "Controller");
Однак я не можу знайти, як це зробити від користувацького помічника HTML. У мене є
public class MyCustomHelper
{
public static string ExtensionMethod(this HtmlHelper helper)
{
}
}
Хелперна змінна має методи Action та GenerateLink, але вони генерують <a>
s. Я кілька копав вихідний код ASP.NET MVC, але не зміг знайти прямого шляху.
Проблема полягає в тому, що вищевказаний URL є членом класу перегляду, і для його створення потрібні деякі контексти та карти маршрутів (з якими я не хочу мати справу і я все одно не повинен). Крім того, екземпляр класу HtmlHelper також має деякий контекст, який, на мою думку, є або вечерею підмножини інформації про контекст екземпляра Url (але, знову ж таки, я не хочу з цим мати справу).
Підсумовуючи це, я думаю, що це можливо, але оскільки всі способи, які я міг бачити, передбачають певні маніпуляції з деякими більш-менш внутрішніми речами ASP.NET, мені цікаво, чи є кращий спосіб.
Редагувати: Наприклад, я бачу одну з можливих можливостей:
public class MyCustomHelper
{
public static string ExtensionMethod(this HtmlHelper helper)
{
UrlHelper urlHelper = new UrlHelper(helper.ViewContext.RequestContext);
urlHelper.Action("Action", "Controller");
}
}
Але це не здається правильним. Я не хочу сам мати справу з примірниками UrlHelper. Має бути простіший спосіб.