服務熱線
153 8323 9821
想要在頁面里JS代碼里onclick去調(diào)用后臺文件中的一個方法,搞了半天,才弄懂怎么做。
原來是通過PageMethods來實現(xiàn)的。
舉個列子:
Default.aspx 里代碼
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!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">
<head runat="server">
<title>無標題頁</title>
<script type="text/javascript" language="javascript">
<!--
function minbzdm()
{
PageMethods.OK(xxx);
}
function xxx(result)
{
alert(result);
}
//-->
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true">
</asp:ScriptManager>
<div>
<input type='button' value='刪除' onclick='minbzdm()' />
</div>
</form>
</body>
</html>
Default.aspx.cs里的代碼
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
[System.Web.Services.WebMethod]
public static string OK()
{
return "OK";
}
}
通過PageMethods方法來實現(xiàn)JS調(diào)用CS,必須注意一下幾點:
【1】靜態(tài)的方法
public static
【2】需要在cs方法上加上:
[System.Web.Services.WebMethod]
【3】需要自定義一個函數(shù)接受結果
function xxx(result)
{
alert(result);
}
【4】ScriptManager 必須設置成 EnablePageMethods="true"
注意:
1、PageMethods.OK( 參數(shù)一,參數(shù)二,參數(shù)三,...,xxx);可以傳入?yún)?shù)。對應的CS后臺方法也要改進!
2、xxx為回調(diào)函數(shù)名,只有僅有一個參數(shù)。參數(shù)可以是數(shù)組,List<T>泛型等。
http://www.cnblogs.com/juxiaoqi/archive/2008/08/21/1273059.html
補充:
AJAX 調(diào)用Web Service 與 PageMethods注意細節(jié)
想要使用ASP.NET AJAX在客戶端JavaScript中異步調(diào)用服務器端Web Service,我們需要:
1 為Web Service類或需要暴露給客戶端的Web Service方法添加[ScriptService]
屬性;
2 為Web Service中需要暴露給客戶端的方法添加[WebMethod]屬性;
3 在頁面中的ScriptManager控件中添加對該Web Service的引用;
4 在客戶端使用如下JavaScript語法調(diào)用該Web Service:
[NameSpace].[ClassName].[MethodName](param1, param2,..., callbackFunction)
5 為客戶端異步調(diào)用指定回調(diào)函數(shù),在回調(diào)函數(shù)中接收返回值并進一步處理。
-----------------------
想要使用ASP.NET AJAX在客戶端JavaScript中異步調(diào)用定義在ASP.NET頁面中的方法,我們需要:
1 將該方法聲明為公有(public);
2 將該方法聲明為類方法(C#中的static,VB.NET中的Shared),而不是實例方法;
3 為該方法添加[WebMethod]屬性;
4 將頁面中ScriptManager控件的EnablePageMethods屬性設置為true;
5 在客戶端使用如下JavaScript語法調(diào)用該頁面方法:
PageMethods.[MethodName](param1, param2,..., callbackFunction);
6 為客戶端異步調(diào)用指定回調(diào)函數(shù),在回調(diào)函數(shù)中接收返回值并進一步處理。
補充:另外一種調(diào)用
前臺JS:
function check() {
var title = document.getElementById("TabContainer1_tabpanel4_txtPicTitle").value;
var sn = document.getElementById("TabContainer1_tabpanel4_txtSN").value;
var playGUID = document.getElementById("TabContainer1_tabpanel4_hidPlayGUID").value;
var msg = Drilling_Pictures.Validate(title, sn, playGUID).value;//主要注意這里
if (msg == "") {
return true;
} else {
alert(msg);
return false;
}
}
<asp:ImageButton ID="imgBtn" runat="server" ImageUrl="~/images/btn25.png" OnClick="imgBtn_Click"
OnClientClick="return check();" />
后臺代碼:
public partial class Drilling_Pictures : BasePage
{
[AjaxPro.AjaxMethod]
public string Validate(string title, string sn, string playGUID)
{
string str = "";
if (title.Trim() == "")
{
str = "標題不能為空";
}
else if (sn.Trim() == "")
{
str = "序號不能為空";
}
else if (!ConvertInt(sn.Trim()))
{
str = "序號必須為整數(shù)";
}
else if (!new DrillingPlayBack().CheckSN(playGUID, int.Pars
上一篇:網(wǎng)站備案辦理流程
下一篇:錨文本要怎么做?