ASP.NET MVC alternativa pública para UrlHelper.GenerateUrl

votos
13

Eu quero inserir um link para uma ação de controlador na minha página para que eu possa usá-lo de javascript. Algo como

var pollAction = '/Mycontroller/CheckStatus'

Agora estou feliz de codificá-lo, mas seria muito bom se houvesse um método que eu poderia usar para criar a URL. O AjaxHelper / HtmlExtensions conter métodos para criar hiperlinks (.ActionLink (...) e assim por diante), mas se você olhar para a coragem deles, eles dependem de um método chamado UrlHelper.GenerateUrl () para resolver um controlador e ação em um url. Esta é interno, então não posso realmente chegar a este.

Alguém encontrou um bom método no âmbito de fazer isso? Ou devo fazer a minha própria?

Publicado 10/12/2008 em 12:03
fonte usuário
Em outras línguas...                            


2 respostas

votos
17

você já tentou algo nesse sentido?

var pollAction = '<%=Url.Action("CheckStatus", "MyController") %>';
Respondeu 10/12/2008 em 12:21
fonte usuário

votos
11

Se sua página ou controle herda ViewPageou ViewUserControl, use o Url.Actionmétodo.

Se não, use esta em vez disso:

 String url = RouteTable.Routes.GetVirtualPath
              (
                ((MvcHandler) HttpContext.Current.CurrentHandler).RequestContext,
                new RouteValueDictionary
                (
                  new 
                  { 
                    controller = "MyController", 
                    action = "CheckState", 
                    id = idParameter 
                  }
                )
              ).VirtualPath;

Coloque isso dentro de um método em seu código-behind e chamá-lo do ponto de vista HTML.

Respondeu 10/12/2008 em 12:54
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more