出自ProgWiki
用途
- 透過ASP.NET AJAX的PageMethods與ASP.NET的WebMethod作訊息互通的橋樑
範例
與scriptaculous.js整合做Slider測試
Default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
<script src="js/prototype.js" type="text/javascript"></script>
<script src="js/scriptaculous.js" type="text/javascript"></script>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true" />
<br />
<div id="track1" style="width:200px;background-color:#aaa;height:5px;">
<div id="handle1" style="width:5px;height:10px;background-color:#f00;cursor:move;"> </div>
</div>
<div id="debug1" style="padding-top: 5px;"></div>
</form>
<script type="text/javascript" language="javascript">
// <![CDATA[
function UpdateMessages(result)
{
$get('Label1').innerHTML = result;
}
new Control.Slider('handle1','track1',
{
onSlide:function(v)
{
$('debug1').innerHTML='slide: '+v
},
onChange:function(v)
{
//$('debug1').innerHTML='changed! '+v;
PageMethods.SetSlider('track1',v, UpdateMessages);
}
}
);
// ]]>
</script>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</body>
</html>
Default.aspx.cs
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Web.Services;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
[WebMethod]
static public string SetSlider(string id, string value)
{
return string.Format("{0} - {1}",id, value);
}
}
FAQ
找不到型別或命名空間名稱 'WebMethod' (您是否遺漏 using 指示詞或組件參考?)
using System.Web.Services;
'PageMethods'未被定義
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true" />