asp.net jquery web-services asmx pagemethods

asp.net - llamando a un método de página ascx usando jquery



web-services asmx (8)

Sé que puedo llamar a un método de página con jquery usando la siguiente sintaxis

$.ajax({ type: "POST", url: "Default.aspx/GetDate", data: "{}", contentType: "application/json; charset=utf-8", dataType: "json", success: function(msg) { // Replace the div''s content with the page method''s return. $("#Result").text(msg.d); } });

Esto funciona para páginas aspx pero ¿es posible con páginas ascx ? (controles web)

Lo he intentado durante media hora y como no puedo hacerlo funcionar, me pregunto si es posible.

Nota: Para que quede claro, cuando trato de llamar a la página de ascx estoy actualizando la URL en jquery :)


¿Qué hay de crear el método en la página .aspx que hace lo que necesita con la información del control? Sé que la gente regresa y el cuarto en lo que se supone que los controles contienen o no contienen, pero si el control solo contiene propiedades y objetos, creo que tener la función en la página .aspx podría funcionar para usted. Obviamente, habría muchas concesiones.



Crearía un controlador genérico (.ashx) que carga el control y escribe su HTML renderizado en la respuesta.


No creo que sea posible solicitando directamente el archivo ascx, es decir, suministrando "MyControl.ascx" como el parámetro url a $ .ajax (..). El archivo ascx no está expuesto directamente por el servidor web.

Puede, según creo, proporcionar la url de la página aspx que contiene el control de usuario, es decir, si una instancia de MyControl.ascx vive en MyPage.aspx, debe proporcionar "MyPage.aspx" como el parámetro url. Sin embargo, parece que eso podría vencer el propósito de lo que estás tratando de lograr.

EDITAR: Lo que Clyde dijo a continuación parece una buena idea. Estoy haciendo algo similar al incluir el control ascx en una página cuyo trabajo es más o menos solo para alojarlo para acceder desde el script del lado del cliente.


No creo que sea posible, ya que los controles del usuario no están destinados a ser accesibles externamente (fuera de una página). Sugiero simplemente usar un servicio de script (un servicio web).


No, porque los controles ascx no representan una URL real a la que se pueda acceder desde una máquina cliente. Son puramente del lado del servidor destinados a incrustar en otras páginas.

Lo que quizás desee hacer es tener una página aspx que proporcione el mismo fragmento de html que tiene actualmente en su archivo ascx. Una página aspx no necesita necesariamente proporcionar un documento html completo (<html> <body> etc.), simplemente puede hacer que el usuario controle lo que le interesa.

Utilizamos esta técnica todo el tiempo con el plugin ingrid, que requiere una url de devolución de llamada para los contenidos de la tabla.


Puede escribir el método GetDate () en Default.aspx u otro archivo aspx Y PUEDE LLAMAR ESTE MÉTODO DESDE .ASCX FILE .

Ex:

En UserControl.ascx:

$.ajax({ type: "POST", url: "Default.aspx/GetDate", data: "{}", contentType: "application/json; charset=utf-8", dataType: "json", success: function(msg) { // Replace the div''s content with the page method''s return. $("#Result").text(msg.d); }

});

En Default.aspx.cs:

Public void GetDate() //Public static void { //your code here }