2010-11-30 12 views
9

La implementación de My Pagemethod no funciona en el navegador Chrome. tengo ASP.NET 3.5 aplicación web desarrollada en VS 2008.Métodos de página en asp.net

El código siguiente no funciona en Chrome o Safari:

function FetchDataOnTabChange(ucName) 
{ 
    PageMethods.FetchData(ucName, OnSuccessFetchDataOnTabChange, OnErrorFetchDataOnTabChange); 
} 

function OnErrorFetchDataOnTabChange(error) 
{ 
    //Do something 
} 

function OnSuccessFetchDataOnTabChange(result) 
{ 
    //Do something 
} 
+0

Sí, funciona mejor en IE7 y superior, Mozilla correctamente, pero falla en Chrome y Safari. y no quiero comentar sobre la última pregunta. – Chetan

+0

Necesitará publicar algún código si quiere una respuesta –

+0

¿También puede proporcionar el código que usa en javascript? También hay una herramienta de desarrollador para depurar javascript en Chrome. __ctrl + shift + j__ – XIII

Respuesta

23

Lo siento por la respuesta tardía, pero si alguien tropieza sobre esto más adelante, esto debería funcionar en todos los navegadores siguiendo los pasos a continuación.

  • El método de la página debe tener el System.Web.Services.WebMethod atributo. [WebMethod]
  • El método de la página debe ser público. [WebMethod] public ...
  • El método de página debe ser estático. [WebMethod] public static ...
  • El método de página debe definirse en la página (ya sea en línea o en el código subyacente). No se puede definir en una página de control, página maestra o base .
  • El ASP.NET AJAX Script Manager debe tener EnablePageMethods establecido en verdadero.

Esta es una aplicación de trabajo página

aspx:

/* the script manager could also be in a master page with no issues */ 
<asp:ScriptManager ID="smMain" runat="server" EnablePageMethods="true" /> 
<script type="text/javascript"> 
    function GetDetails(Id) { 
     PageMethods.GetDetails(doorId); 
    } 
</script> 

código detrás:

[System.Web.Services.WebMethod] 
public static void GetDetails(string Id) 
{ 

} 

Buena suerte! :-)

+0

No entiendo esto: "El método de página no se puede definir en la página base". ¿Podrías explicar por qué? Porque tengo que usar controladores entonces. – donRumatta

+0

desafortunadamente, no conozco el motivo técnico "por qué", pero la respuesta es porque MasterPage no hereda de System.Web.UI.Page, por lo tanto, no puede llamar a PageMethods, ya que técnicamente no es una página sino un System.Web .UI.MasterPage. – hardba11

+1

Tengo que decir que creo que esta respuesta no está actualizada. Vea mi pregunta aquí: http://stackoverflow.com/questions/20554780/inconsistent-pagemethod-behavior-in-different-browsers. Siguió todos sus pasos, con resultados mixtos. – LittleBobbyTables