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种函数
第一种方式
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种函数
"processCallbackResult", "context", "postBackError", true);
?/
另外晚上我对比 public partial class _Default : System.Web.UI.Page, ICallbackEventHandler2个aspx.cs都继承ICallbackEventHandler
但第1个
public string GetCallbackResult()
{
return m_ADFCallbackFunctionString;
} public void RaiseCallbackEvent(string eventargs)
{
// 将传入参数依据&分割符分到querystring变量中
}后面是arcgis操作省略第2个
private string CallBackValue = string.Empty;
2
3 string ICallbackEventHandler.GetCallbackResult()
4 {这里实现复杂的取值
5 return CallBackValue + ",ok";
6 }
7
8 void ICallbackEventHandler.RaiseCallbackEvent(string eventArgument)
9 {
10 this.CallBackValue = eventArgument;
11 }
对比发现2种方法方向相反?????最后有疑问
// 判断是否有相应的缓存信息
string cachedResponse = Cache[callbackArg] as string;
if (cachedResponse != null)
{
return cachedResponse;
}
// 将传入参数依据&分割符分到querystring变量中
Array keyValuePairs = callbackArg.Split("&".ToCharArray());
这些代码 Cache[callbackArg] 是在代码或者配置什么地方定义的?