asp.net ScriptManager PageMethods est indéfini
Je veux l'appeler côté serveur statique méthodes de JS j'ai donc décider d'utiliser le contrôle ScriptManager sur mon site.
Donc, j'ai une page principale, avec une telle structure:
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="TopLevelMasterPage.Master.cs"
Inherits="Likedrive.MasterPages.TopLevelMasterPage" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:fb="http://ogp.me/ns/fb#">
<head runat="server">
<title></title>
<script type="text/javascript">
function getGiftFileUrl() {
function OnSuccess(response) {
alert(response);
}
function OnError(error) {
alert(error);
}
PageMethods.GetGiftFileUrl("hero", 1024, 768, OnSuccess, OnError);
}
getGiftFileUrl();
</script>
</asp:ContentPlaceHolder>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManagerMain"
runat="server"
EnablePageMethods="true"
ScriptMode="Release"
LoadScriptsBeforeUI="true">
</asp:ScriptManager>
<asp:ContentPlaceHolder ID="MainContent" runat="server">
</asp:ContentPlaceHolder>
</form>
</body>
</html>
Mais quand la page est en cours de chargement, j'ai un JS exception - PageMethods est pas défini.
Je suppose que l'objet sera créé implicite donc je peux l'utiliser dans mon code javascript.
source d'informationauteur igorGIS
Vous devez vous connecter pour publier un commentaire.
À utiliser PageMethods vous devez suivre ces étapes:
ScriptManager
et définirEnablePageMethods
. (Vous avez).static
méthode dans votre code derrière et l'utilisation de la[WebMethod]
attribut.sucess
eterror
rappels. (Vous avez).Vous avez manqué l'une de ces étapes?
Edit:
Viens de réaliser que vous avez fait cela:
Vous avez le vôtre rappels à l'intérieur d'une fonction. Vous avez besoin de la vôtre rappels comme ceci:
Et vous code derrière sera probablement fin à quelque chose comme ça:
Bonus: Puisque c'est un
static
méthode, vous ne pouvez pas utiliserthis.Session["mySessionKey"]
mais vous pouvez le faireHttpContext.Current.Session["mySessionKey"]
.Dans votre code-behind créer cette méthode:
votre js script devrait ressembler à cela:
J'ai réaliser pourquoi l'PageMethod objet a été undefinded, parce que ScriptManager composant placé à côté du script qui utilise PageMethod, de sorte que lorsque la page est affichée et que le script est exécuté, il n'y a pas de PageMethod en ce moment. J'ai donc besoin d'appeler getGiftFileUrl() sur le bouton cliquez sur ou sur la fenêtre de l'événement de chargement, quand tous les scripts sur la page prêt à l'utilisation.