ASP.NET MVC публичная альтернатива UrlHelper.GenerateUrl - PullRequest
13 голосов
/ 10 декабря 2008

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

var pollAction = '/Mycontroller/CheckStatus'

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

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

Ответы [ 2 ]

17 голосов
/ 10 декабря 2008

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

var pollAction = '<%=Url.Action("CheckStatus", "MyController") %>';
11 голосов
/ 10 декабря 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...