首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

2种asp.net ajax方法怎么集成

2012-04-30 
2种asp.net ajax方法如何集成c# asp.netvs2008第一种方式page_load下m_ADFCallbackFunctionString Page.

2种asp.net ajax方法如何集成
c# asp.net vs2008
第一种方式
page_load下
  m_ADFCallbackFunctionString = Page.ClientScript.GetCallbackEventReference(this, "message",
  "processCallbackResult", "context", "postBackError", true);
  }

  public void RaiseCallbackEvent(string eventargs)
  {
  // 将传入参数依据&分割符分到querystring变量中
  Array keyValuePairs = eventargs.Split("&".ToCharArray());
  NameValueCollection queryString = new NameValueCollection();
  string[] keyValue;
  string response = "";
  if (keyValuePairs.Length > 0)
  {
  for (int i = 0; i < keyValuePairs.Length; i++)
  {
  keyValue = keyValuePairs.GetValue(i).ToString().Split("=".ToCharArray());
  queryString.Add(keyValue[0], keyValue[1]);
  }
  }
  else
  {
  keyValue = eventargs.Split("=".ToCharArray());
  if (keyValue.Length > 0)
  queryString.Add(keyValue[0], keyValue[1]);
  }
  // 是否进行缓存,对于属性查询图形不进行缓存
  bool needCached = true;
  // 针对参数中指定的ActiveType不同执行不同操作
  string Condtion = queryString["Condtion"];
  string eventArg = queryString["EventArg"];
后面是arcgis操作省略

  public string GetCallbackResult()
  {
  return m_ADFCallbackFunctionString;
  }
总结这个方式是 pageload 下定义 m_ADFCallbackFunctionString = Page.ClientScript.GetCallbackEventReference(this, "message",
  "processCallbackResult", "context", "postBackError", true);
  之后2个void public void RaiseCallbackEvent(string eventargs)
public string GetCallbackResult() 经过测试是可用的


第二种方式 环境任然是vs2008 asp.net c#
pageload 下定义
a1 = Page.ClientScript.GetCallbackEventReference(this,
  "message", "processCallbackResult", "context", "postBackError", true);

a2 = Page.ClientScript.GetCallbackEventReference(this,
  "message", "processCallbackResult", "context", "postBackError", true);

a3 = Page.ClientScript.GetCallbackEventReference(this,
  "message", "processCallbackResult", "context", "postBackError", true);
private string callbackArg
  string ICallbackEventHandler.GetCallbackResult()
  {
  // 判断是否有相应的缓存信息
  string cachedResponse = Cache[callbackArg] as string;
  if (cachedResponse != null)
  {
  return cachedResponse;
  }
  // 将传入参数依据&分割符分到querystring变量中
  Array keyValuePairs = callbackArg.Split("&".ToCharArray());
  NameValueCollection queryString = new NameValueCollection();
  string[] keyValue;
  string response = "";
  if (keyValuePairs.Length > 0)
  {
  for (int i = 0; i < keyValuePairs.Length; i++)
  {
  keyValue = keyValuePairs.GetValue(i).ToString().Split("=".ToCharArray());
  queryString.Add(keyValue[0], keyValue[1]);
  }
  }
  else
  {
  keyValue = callbackArg.Split("=".ToCharArray());


  if (keyValue.Length > 0)
  queryString.Add(keyValue[0], keyValue[1]);
  }
  // 是否进行缓存,对于属性查询图形不进行缓存
  bool needCached = true;
  // 针对参数中指定的ActiveType不同执行不同操作
   
  string controlType = queryString["ActiveType"];
  string eventArg = queryString["EventArg"];
  switch (controlType)
  {
  case "GetResourceContent":
  response = GisFunctionality.GetResourceContent(Map1);
  break;
  case "ShowFieldInfo":
  response = GisFunctionality.ShowFieldInfo(Map1, eventArg);  
  break;
  case "AttributeQuery":
  response = GisFunctionality.AttributeQuery(Map1, eventArg, queryString["Condtion"]);
  needCached = false;
  break;
  default:
  break;
  }
  if (needCached)
  {
  TimeSpan cacheDuration = new TimeSpan(0, 0, 999999);
  Cache.Add(callbackArg, response, null,
  DateTime.Now.Add(cacheDuration),
  System.Web.Caching.Cache.NoSlidingExpiration,
  System.Web.Caching.CacheItemPriority.NotRemovable, null);
  }
  return response;
  }
  void ICallbackEventHandler.RaiseCallbackEvent(string eventArgument)
  {
  callbackArg = eventArgument;
  }
这个是pageload 下定义
之后2个完成函数 加private string callbackArg。 单独测试也是可用的 。

问题 是 这2个方法有什么区别 (第2中用的是ICallbackEventHandler 我把2种方法合在一起。 (2个人写的代码集成)
4个函数设置断点发现ICallbackEventHandler.GetCallbackResult 
ICallbackEventHandler.RaiseCallbackEvent
是优先于第1种的2个void)

问题 
1 2种办法区别
2 如何把第1种的2个函数 法放入第2种函数

 


[解决办法]
可以通过POST传值哦,喵~

热点排行