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?
Methode sollte öffentlich und nicht geschützt werden. – Boney
Ändern Sie Ihre TestMarker Static-Methode Public statt Protected – UJS
Wäre es einfacher, den PageMethods-Weg zu verwenden? – fifamaniac04