asp.net回调javascript
using System;
using System.Collections;
using System.IO;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
namespace Platform
{
/// <summary>
/// 可以处理客户端的jscript的回调
/// </summary>
[DefaultProperty(""),
ToolboxData("<{0}:ScriptCallbackManager runat=server></{0}:ScriptCallbackManager>")]
public class ScriptCallbackManager : System.Web.UI.WebControls.WebControl
{
private ICallbackEventHandler _handler;
private String _functionNameAfterCallback;
public ScriptCallbackManager() {
//_handler = (ICallbackEventHandler)Page;
}
/// <summary>
/// 回调完执行的客户端函数
/// </summary>
public string FunctionNameAfterCallback
{
get { return _functionNameAfterCallback; }
set { _functionNameAfterCallback = value; }
}
public ICallbackEventHandler CallbackEventHandler
{
get { return _handler; }
set { _handler = value; }
}
/// <summary>
/// 将此控件呈现给指定的输出参数。
/// </summary>
/// <param name="output"> 要写出到的 HTML 编写器 </param>
protected override void Render(HtmlTextWriter output)
{
output.Write(this.GetCallbackEventReference());
}
protected override void OnInit(EventArgs e){
base.OnInit(e);
try {
this.HandleRequest();
}
catch (Exception ex){
object o = ex;
}
}
private void HandleRequest(){
HttpRequest request = this.Page.Request;
HttpResponse reponse = this.Page.Response;
String sType = request["type"];
if ((sType != null) && (sType == "__scriptcallback:" + this.ID))
{
String sRequest = this.GetRequestContent(request);
String sResult = this.CallHandler(sRequest);
reponse.Clear();
reponse.Expires = 0;
reponse.Write(sResult);
reponse.End();
}
}
private String GetRequestContent(HttpRequest request) {
HttpRequest r = request;
String s = r.ToString();
using (StreamReader reader = new StreamReader(request.InputStream)) {
return reader.ReadToEnd();
}
}
private String CallHandler(String param) {
if (this.CallbackEventHandler != null) {
return this.CallbackEventHandler.RaiseCallbackEvent(this, param);
}
return "";
}
/*
private ICallbackEventHandler GetScriptCallbackHandlerOnPage(String id)
{
return this.GetScriptCallbackHandler(this.Page, id);
}
private ICallbackEventHandler GetScriptCallbackHandler(Control control, String id)
{
if ((control is ICallbackEventHandler) && (control.ID == id))
{
return control as ICallbackEventHandler;
}
foreach(Control child in control.Controls)
{
ICallbackEventHandler handler = GetScriptCallbackHandler(child, id);
if (handler != null)
{
return handler;
}
}
return null;
}
*/
private String GetCallbackEventReference()
{
StringBuilder sb = new StringBuilder();
sb.Append("<script>");
sb.Append("function " + this.ID + "(param, context) {");
sb.Append("var xmlhttp = new ActiveXObject('Msxml2.XMLHTTP');");
sb.Append("xmlhttp.Open('POST', '" + HttpContext.Current.Request.Url.ToString() + "?type=__scriptcallback:" + this.ID + "', false);");
sb.Append("xmlhttp.Send(param);");
sb.Append(this.FunctionNameAfterCallback + "(xmlhttp.responseText, context);");
sb.Append("}");
sb.Append("</script>");
return sb.ToString();
}
}
}
asp.net回调javascript相关推荐
- (转)用ASP.NET向Javascript传递变量 方法1:
(转)用ASP.NET向Javascript传递变量 方法1: 用一个隐藏控件,把变量的值给隐藏控件,再用Javascript去找隐藏控件的值 window.document.getElementBy ...
- ASP.NET与JavaScript联合操作之一 选择DataGrid中的CheckBox控件后该行背景变色
在网络开发中,经常遇到需要使用ASP.NET与JavaScript联合进行控制的情况.在本篇中,将使用DataGrid进行数据绑定,使用Javascript控制当选中其中的checkbox时,该行颜色 ...
- Asp.Net中用javascript实现弹出窗口永远居中
//Asp.Net中用javascript实现弹出窗口永远居中 function ShowDialog(url) { var iWidth=600; //模态窗口宽度 var iHei ...
- 高效管理ASP.NET的JavaScript库
简介 对于ASP.NET开发人员来说,管理项目中的JavaScript都很随意: 我想这很大程度上可能是因为网上没有如何妥善处理ASP.NET中JavaScript的可靠信息.此文的目的就是提供一种最 ...
- Asp.net AJAX JavaScript 基本类型扩展(7)——String 类型及其扩展
参考: JScript 语言参考 http://msdn2.microsoft.com/en-us/library/c12461ed-986a-450b-be3d-81a4d808b48b Asp. ...
- asp php flash java,Linux_Flash 和 ASP / PHP 以及 javascript 的交互, 唉,第一次写文章,真是 - phpStudy...
Flash 和 ASP / PHP 以及 javascript 的交互 唉,第一次写文章,真是很紧张,这是前几天在网上查资料和自己研究的结果,希望能对一些朋友有用.水平所限,肯定有错漏之处,烦劳高手指 ...
- Visual studio 中调试ASP程序、Javascript 代码 - 刘稻博客
2019独角兽企业重金招聘Python工程师标准>>> PS: 1.在调试asp时,要先附加进程(附加到:自动:与具体调试网站对应的 dllhost.exe 或 w3wp.exe . ...
- 在ASP.NET使用javascript的一点小技巧
我们在进行ASP.NET开发时,经常会用到一些javascript脚本,比如: private void Button1_Click(object sender, System.EventArgs e ...
- asp.net与JAVASCRIPT函数的相互调用
1.如何在JavaScript访问C#函数? 方法一: (1).首先建立一个按钮,在后台将调用或处理的内容写入button_click中; (2).在前台写一个js函数,内容为document ...
- 在ASP.NET使用javascript的一点小技巧(转www.chinacs.net 中文C#技术站 )
我们在进行ASP.NET开发时,经常会用到一些javascript脚本,比如: private void Button1_Click(object sender, System.EventArgs e ...
最新文章
- 管理的最高境界:残缺中的和谐
- python循环练习_Python循环练习
- 必要时进行保护性拷贝
- C# 中,利用 Conditional 定义条件方法
- JSON cannot be resolved 解决方法
- 怎么让字体拥有金属风格?15种不同的金属风格文字效果ps样式不可错过!
- Pubwin EP常见问题(转)
- ios kb转m_字节、kb、M怎么换算
- 基因组变异检测概述(SNP、InDel、SV)
- 宽带和流量是分开的吗_宽带、带宽和流量的区别
- 视口锁定解锁lisp_CAD锁定和解锁视口的快捷键分别是什么
- 中国人寿保险软件开发机试题 java实现
- [附源码]Python计算机毕业设计航空订票系统Django(程序+LW)
- jsp小区物业停车管理系统毕业设计
- 工作日记:CSS 让img变成颜色变成白色/黑色
- 悉尼大学计算机科学本科学费多少,2020年悉尼大学开设了哪些IT专业?学费是多少?入学要求有哪些?...
- 利用python抓取指定格式数据并翻译
- Spring AOP之坑:完全搞清楚advice的执行顺序
- 蒋涛作序盛赞Leo新作为 程序员职场实用百科全书 —— 程序员羊皮卷 连载 1
- 用计算机数字弹侧脸,侧脸钢琴简谱-数字双手-于果
热门文章
- Netlink0004 --- 多播机制的用法
- Uboot下SPI FLASH的添加(SPI 控制器采用软件模拟的方式)
- freeswitch被叫忙处理
- PostgreSQL创建数据库用户
- Idle进程的切换过程
- [C++] C/C++ 取整函数ceil(),floor()
- 排序 不用order by_Sort Techniques:介绍九种排序算法
- excel取整数的函数_Excel教程:取整函数INT 与TRUNC~~Excel新技能
- 凸优化系列二:确定步长一维搜索算法
- 链表常见操作java实现一:链表初始化,求链表长度