2017-04-19 12 views
0

Ich benutze Visual Studio 2015 und das Projekt ist in .NET 4.5.2 Ich wähle die Standardvorlage, so dass es einige Dinge wie die Master-Site und Default.aspx gibt Die Lösung, aber ich habe sie nicht berührt ...So richten Sie PageMethods in ASP.net ein

Ich habe eine Seite, Welcome.aspx hinzugefügt und kann nicht scheinen, die PageMethods ordnungsgemäß funktionieren.

Welcome.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Welcome.aspx.cs" Inherits="MyProject.Welcome" %> 
<!DOCTYPE html> 
<html> 
    <head> 
     <title></title> 
     <link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/leaflet.css" /> 
     <script src="https://unpkg.com/[email protected]/dist/leaflet.js"></script> 
     <link rel="stylesheet" href="CSS/WelcomeCSS.css" /> 
     <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script> 
     <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.js"></script> 
     <link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.1/themes/base/jquery-ui.css" /> 
    </head> 

    <body> 
     <form id="WelcomeForm" runat="server"> 
     <asp:ScriptManager ID="ScriptManager1" EnablePageMethods="true" runat="server"></asp:ScriptManager> 

      <div> ... some more html... non <asp:controls>...</div> 

      <script type="text/javascript"> 

      //PageMethods.TestMarker(); // throws exception - PageMethods is undefined. 

      $.ajax({ 
       type: "POST", 
       dataType: 'text', 
       contentType: "text", 
       url: "Welcome.aspx/TestMarker()", 
       data: "{val = adrian}", // parameters for method 
       success: function (dt) { alert("HI"+dt); }, //all Ok 
       error: function (dt) { alert(dt); } // some error 
      }); // doesn't seem to throw an error but C# never gets called 
      </script> 
     </form> 
    </body> 
    </html> 

Welcome.aspx.cs

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Services; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

namespace HomeVenues 
{ 
    public partial class Welcome : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 

     } 

     [WebMethod] 
     protected static void TestMarker(string val) 
     { 
      return; 
     } 

    } 
} 

Ich habe die folgenden Hinweise: - system.web.extensions

F: Was vermisse ich meinen serverseitigen Code?

+0

Methode sollte öffentlich und nicht geschützt werden. – Boney

+0

Ändern Sie Ihre TestMarker Static-Methode Public statt Protected – UJS

+0

Wäre es einfacher, den PageMethods-Weg zu verwenden? – fifamaniac04

Antwort

0

ändern Sie Ihre Geschütztes WebMethod zu öffentlichen wie folgt:

[WebMethod] 
     Public static void TestMarker(string val) 
     { 
      return; 
     } 

Ändern Sie Ihre Client-seitiges Script Ajax-Aufruf wie folgt:

<script>  
$.ajax({ 
        type: "POST", 
        dataType: 'text', 
        contentType: "text", 
        url: "Welcome.aspx/TestMarker", 
        data: '{ val:"adrian" }', // parameters for method 
        success: function (data) { alert("HI" + data.d); }, //all Ok 
        error: function (data) { alert(data); } // some error 
       }); 
</script> 

Erläuterung: - Erinnern folgende Punkte:

öffentlich

Auf den Typ oder das Element kann mit jedem anderen Code in derselben Baugruppe oder einer anderen Baugruppe zugegriffen werden, die darauf verweist.

geschützt

Der Typ oder Element kann nur durch den Code in der gleichen Klasse oder Struktur oder in einer abgeleiteten Klasse zugegriffen werden.

Privat

Der Typ oder Member kann nur durch Code in der gleichen Klasse oder Struktur zugegriffen werden.

+0

Versuchte dies und immer noch nicht in der Lage, meine C# – fifamaniac04

+0

fifamaniac04, ich habe gerade aktualisiert den Code und update Ur-Code entsprechend ... Ihre clientseitigen Aufruf haben einen Fehler – UJS

+0

In VS, nach den Änderungen, bekomme ich Folgendes im Ausgabefenster ..... Exception geworfen: 'System.Threading.ThreadAbortException' in mscorlib.dll Ausnahme ausgelöst: 'System.Threading.ThreadAbortException 'in System.Web.dll – fifamaniac04

0

versuchen, Änderungen an den folgenden Codezeilen machen:

public static void TestMarker(string val) //Method should be public 
url: "Welcome.aspx/TestMarker", //Dont need enclosing braces 
dataType: "json", 
contentType: "application/json; charset=utf-8", 
data: JSON.stringify({val:"adrian"}), 
+0

Versucht dies und immer noch nicht in der Lage zu treffen meine C# – fifamaniac04

+0

Welchen Fehler bekommen Sie? – Boney

+0

'System.Threading.ThreadAbortException' in mscorlib.dll – fifamaniac04

Verwandte Themen