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.

Другие вопросы по тегам