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

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

var pollAction = '/Mycontroller/CheckStatus'

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

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

10.12.2008 11:03:11
2 ОТВЕТА
РЕШЕНИЕ

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

var pollAction = '<%=Url.Action("CheckStatus", "MyController") %>';
17
18.07.2013 05:45:56
Я знал, что там был простой ответ! Спасибо!
Jennifer 10.12.2008 11:26:04

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

11
18.07.2013 05:51:35