2011-07-15 9 views
5

Actualmente estoy teniendo problemas para encontrar una manera de llamar a ResolveClientUrl dentro del contexto de un método web estático dentro de una página de ASP.Net Web Forms.Llamando a ResolveClientUrl dentro de un método web estático (formularios web ASPNet)

Estoy usando llamadas jQuery Ajax para interactuar con WebForms como se documenta aquí: http://encosia.com/using-jquery-to-directly-call-aspnet-ajax-page-methods/ que es la razón por la cual el WebMethod debe ser estático. El problema es que dentro del WebMethod necesito generar una URL y anexarle una cadena de consulta, y me gustaría ir a lo seguro y pasarla a ResolveClientUrl antes de anexar la cadena de consulta.

¿Hay alguna manera de evitar esto, o .Net proporciona un método estático alternativo que hace más o menos lo mismo?

Respuesta

2

Es posible si se llama desde una página web usando:

DoThis public static void() { página Página = HttpContext.Current.Handler como página; }

Sin embargo, si está en un método web, no será la página como el controlador; es un controlador para la solicitud web. He utilizado este enfoque desde JavaScript, y lo hizo el trabajo:

http://iridescence.no/post/Resolving-relative-URLe28099s-from-JavaScript.aspx

HTH.

+0

Casi se siente como a * hack *. Sin embargo, es completamente simple y hace el trabajo. Además, siento que es mi única opción. Buen trabajo, gracias! – enriquein

10

de ... ASP.Net C# ResolveClientUrl inside Class

En lugar de llamar ResolveClientUrl en el objeto de página (o cualquier control), también se puede utilizar Web.VirtualPathUtility.ToAbsolute("~/home.aspx"); que le dará el mismo resultado que llamar ResolveUrl("~/home.aspx");

+0

Esto debería marcarse como respuesta. – maxisam

Cuestiones relacionadas