JS调用asp.net后台方法:PageMethods
先帮朋友宣传一下程序人生(http://www.manong123.com)的网站,里面都是开发感悟,开发人员创业,支持一下吧~
原来是通过PageMethods来实现的。
举个列子:
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";
}
}
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方法来实现JS调用CS,必须注意一下几点:
【1】静态的方法
public static
【2】需要在cs方法上加上:
[System.Web.Services.WebMethod]
【3】需要自定义一个函数接受结果
function xxx(result)
{
alert(result);
}
【4】ScriptManager 必须设置成 EnablePageMethods="true"
注意:
1、PageMethods.OK( 参数一,参数二,参数三,...,xxx);可以传入参数。对应的CS后台方法也要改进!
2、xxx为回调函数名,只有仅有一个参数。参数可以是数组,List<T>泛型等。
http://www.cnblogs.com/juxiaoqi/archive/2008/08/21/1273059.html
补充:
AJAX 调用Web Service 与 PageMethods注意细节
想要使用ASP.NET AJAX在客户端JavaScript中异步调用服务器端Web Service,我们需要:
1 为Web Service类或需要暴露给客户端的Web Service方法添加[ScriptService]
属性;
2 为Web Service中需要暴露给客户端的方法添加[WebMethod]属性;
3 在页面中的ScriptManager控件中添加对该Web Service的引用;
4 在客户端使用如下JavaScript语法调用该Web Service:
[NameSpace].[ClassName].[MethodName](param1, param2,..., callbackFunction)
5 为客户端异步调用指定回调函数,在回调函数中接收返回值并进一步处理。
-----------------------
想要使用ASP.NET AJAX在客户端JavaScript中异步调用定义在ASP.NET页面中的方法,我们需要:
1 将该方法声明为公有(public);
2 将该方法声明为类方法(C#中的static,VB.NET中的Shared),而不是实例方法;
3 为该方法添加[WebMethod]属性;
4 将页面中ScriptManager控件的EnablePageMethods属性设置为true;
5 在客户端使用如下JavaScript语法调用该页面方法:
PageMethods.[MethodName](param1, param2,..., callbackFunction);
6 为客户端异步调用指定回调函数,在回调函数中接收返回值并进一步处理。
补充:另外一种调用
前台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 = "序号必须为整数";
}
else if (!new DrillingPlayBack().CheckSN(playGUID, int.Parse(sn)))
{
str = "序号已经存在";
}
return str;
}
}
- 编写优秀代码的10条感悟 很好的一篇文章。
JS调用asp.net后台方法:PageMethods的更多相关文章
- ajax 调用asp.net后台方法
ajax 调用asp.net后台方法 这种做法有好几种,如调用xx.asxh 页面,或者直接调用xx.aspx也面,在page_Load中进行一些判断然后调用后面的其他方法, 或者你可以直接调用we ...
- jQuery调用Asp.Net后台方法
常用的ajax就不讲了,这里主要是说通过ajax调用asp.net后台的cs文件暴露的方法. 前台: <%@ Page Language="C#" AutoEventWire ...
- JQuery Ajax调用asp.net后台方法
利用JQuery的$.ajax()可以很方便的调用asp.net的后台方法. 先来个简单的实例热热身吧. 1.无参数的方法调用 asp.net code: using System.Web.Scrip ...
- jQuery.ajax()调用asp.net后台方法
利用JQuery的$.ajax()可以很方便的调用asp.net的后台方法.介意方法名不要重名 建一个WebFormAjax名aspx文件 CS <%@ Page Language=" ...
- 利用JQuery直接调用asp.net后台方法
利用JQuery的$.ajax()可以很方便的调用asp.net的后台方法. [WebMethod] 命名空间 1.无参数的方法调用, 注意:1.方法一定要静态方法,而且要有[WebMethod] ...
- Js调用asp.net后台代码
方法一: 1.首先建立一个按钮,在后台将调用或处理的内容写入button_click中; 2.在前台写一个js函数,内容为document.getElementById("b ...
- jQuery.ajax()调用asp.net后台方法(非常重要)
http://www.cnblogs.com/zxhoo/archive/2011/01/30/1947752.html 用JQuery的$.ajax()可以很方便的调用asp.net的后台方法. 先 ...
- js调用asp.net 后台属性值
后台代码: public string title = "js调用后台属性值"; public void getContent() { return title; } 前台代码: ...
- .Net中jQuery.ajax()调用asp.net后台方法 总结
利用JQuery的$.ajax()调用.Net后台方法有多种方式, 不多说了 直接上代码 前台代码 <script type="text/javascript"> $ ...
随机推荐
- vue - 路由传递参数
结构目录 1. 页面传值(不同之间的页面传值) 1.1 index.js配置 源码: // 引入vue框架 import Vue from 'vue' // 引入vue-router路由依赖 impo ...
- java记录linux top命令信息
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.Fi ...
- MySQL 工具
MySQL 客户端工具: 1:mysql #mysql的功能和Oracle的sqlplus一样,它为用户提供一个命令行接口来管理Mysql服务器. 2:mysqladmin #mysqla ...
- jquery remove()不兼容问题解决方案
jquery remove()不兼容问题解决方案 CreationTime--2018年7月27日10点19分 Author:Marydon 1.情景展示 点击关闭,将这个div移除掉 源码展示 ...
- 【BIRT】交叉报表中出现空值设置为默认值
在使用BIRT做交叉报表的时候,往往会出现有些维度下的值是空值,例如如下报表: 那么我们可以为这些空值给出默认值,例如"-" 具体操作如下: 点击上图的[Cross Tab]后选中 ...
- Hibernate4.2.21.Final创建入门的HelloHibernet工程
1.在hibernate官网下载hibernate-release-4.2.21.Final.zip并解压 2.新建一个java project工程(HelloHibernet)(myeclipes) ...
- 主从复制时报:ERROR 1794 (HY000): Slave is not configured or failed to initialize properly. You must at least set --server-id to enable either a master or a slave. Additional error messages can be found in t
centos 6.5 mysql5.7 在从库作stop slave时报: error:ERROR 1794 (HY000): Slave is not configured or failed to ...
- php连接sql2005
连接前配置系统: 1.检查文件 php5.2.5/ntwdblib.dll 默认下面有一个,不能连接再替换. 下载正确版本的 ntwdblib.dll (2000.80.194.0),地址: http ...
- mysql的grant用法(转)
GRANT USAGE ON *.* TO 'discuz'@'localhost' IDENTIFIED BY PASSWORD '*C242DDD213BE9C6F8DA28D49245BF69F ...
- windows中mongoDB安装教程
下载路径:http://downloads.mongodb.org/win32/mongodb-win32-i386-1.7.0.zip 将一个DB文件夹 我是放到D盘,路径:Ddb 解压mongod ...