ASP.NET MVC публичная альтернатива UrlHelper.GenerateUrl

Я хочу вставить ссылку на действие контроллера на моей странице, чтобы я мог использовать его из javascript. Что-то вроде

var pollAction = '/Mycontroller/CheckStatus'

Теперь я рад жестко кодировать его, но было бы очень приятно, если бы был метод, который я мог бы использовать для создания URL-адреса. AjaxHelper/HtmlExtensions содержат методы для создания гиперссылок (.ActionLink(...) и т.д.), Но если вы посмотрите на их кишки, они полагаются на метод UrlHelper.GenerateUrl() для разрешения контроллера и действия в url. Это внутренне, поэтому я не могу это понять.

Кто-нибудь нашел хороший способ в этой области? Или я должен бросить свой собственный?

Ответы

Ответ 1

Вы пробовали что-то в этом направлении?

var pollAction = '<%=Url.Action("CheckStatus", "MyController") %>';

Ответ 2

Если ваша страница или элемент управления наследуется от 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.