ASP.NET MVC публичная альтернатива UrlHelper.GenerateUrl
Я хочу встроить ссылку на действие контроллера на своей странице, чтобы я мог использовать его из JavaScript. Что-то вроде
var pollAction = '/Mycontroller/CheckStatus'
Теперь я рад жестко закодировать его, но было бы очень хорошо, если бы был метод, который я мог бы использовать для создания URL. AjaxHelper/HtmlExtensions содержат методы для создания гиперссылок (.ActionLink(...) и т. Д.), Но если вы посмотрите на их внутренности, они используют метод с именем UrlHelper.GenerateUrl() для разрешения контроллера и действия в URL Это внутреннее, так что я не могу до этого добраться.
Кто-нибудь нашел хороший метод в рамках этого? Или я должен свернуть свой собственный?
2 ответа
Вы пробовали что-то подобное?
var pollAction = '<%=Url.Action("CheckStatus", "MyController") %>';
Если ваша страница или элемент управления наследуются от ViewPage
или же ViewUserControl
, использовать Url.Action
метод.
Если нет, используйте это вместо:
String url = RouteTable.Routes.GetVirtualPath
(
((MvcHandler) HttpContext.Current.CurrentHandler).RequestContext,
new RouteValueDictionary
(
new
{
controller = "MyController",
action = "CheckState",
id = idParameter
}
)
).VirtualPath;
Поместите это в метод вашего кода и вызовите его из представления HTML.