我用 ASP.NET 2.0 高级编程的例子,做回调测试学习。结果回调没有反应。
我在 PAGE 里面回了 EnableEventValidation="false" 也没有反应。
if (Page.Request.Browser.SupportsXmlHttp == true)
{
Response.Write("cbReference");
}
用上面语句测试也为真。
请高手们指教。谢谢! 下面附上 ASP.NET 2.0 高级编程的例子 源码:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="RandomNumber.aspx.cs" Inherits="RandomNumber" %><!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 id="Head1" runat="server">
<title>Callback Page</title>
<script type="text/javascript">
function GetNumber(){
UseCallback();
}
function GetRandomNumberFromServer(TextBox1, context){
document.forms[0].TextBox1.value = TextBox1;
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<input id="Button1" type="button" value="Get Random Number"
onclick="GetNumber()" />
<br />
<br />
<asp:TextBox ID="TextBox1" Runat="server"></asp:TextBox>
</div>
</form>
</body>
</html>后台:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;public partial class RandomNumber : System.Web.UI.Page,
System.Web.UI.ICallbackEventHandler
{
private string _callbackResult = null; protected void Page_Load(object sender, EventArgs e)
{
string cbReference = Page.ClientScript.GetCallbackEventReference(this,
"arg", "GetRandomNumberFromServer", "context");
string cbScript = "function UseCallback(arg, context)" +
"{" + cbReference + ";" + "}"; Page.ClientScript.RegisterClientScriptBlock(this.GetType(),
"UseCallback", cbScript, true);
} public void RaiseCallbackEvent(string eventArg)
{
Random rnd = new Random();
_callbackResult = rnd.Next().ToString();
} public string GetCallbackResult()
{
return _callbackResult;
}
}
我在 PAGE 里面回了 EnableEventValidation="false" 也没有反应。
if (Page.Request.Browser.SupportsXmlHttp == true)
{
Response.Write("cbReference");
}
用上面语句测试也为真。
请高手们指教。谢谢! 下面附上 ASP.NET 2.0 高级编程的例子 源码:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="RandomNumber.aspx.cs" Inherits="RandomNumber" %><!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 id="Head1" runat="server">
<title>Callback Page</title>
<script type="text/javascript">
function GetNumber(){
UseCallback();
}
function GetRandomNumberFromServer(TextBox1, context){
document.forms[0].TextBox1.value = TextBox1;
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<input id="Button1" type="button" value="Get Random Number"
onclick="GetNumber()" />
<br />
<br />
<asp:TextBox ID="TextBox1" Runat="server"></asp:TextBox>
</div>
</form>
</body>
</html>后台:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;public partial class RandomNumber : System.Web.UI.Page,
System.Web.UI.ICallbackEventHandler
{
private string _callbackResult = null; protected void Page_Load(object sender, EventArgs e)
{
string cbReference = Page.ClientScript.GetCallbackEventReference(this,
"arg", "GetRandomNumberFromServer", "context");
string cbScript = "function UseCallback(arg, context)" +
"{" + cbReference + ";" + "}"; Page.ClientScript.RegisterClientScriptBlock(this.GetType(),
"UseCallback", cbScript, true);
} public void RaiseCallbackEvent(string eventArg)
{
Random rnd = new Random();
_callbackResult = rnd.Next().ToString();
} public string GetCallbackResult()
{
return _callbackResult;
}
}
public void RaiseCallbackEvent(string eventArg)
没有执行。
也就是没有激活回调事件。
感觉是 javascript UseCallback(); 没有执行。
UseCallback(); 是在服务器定义的 javascript 函数。
应该也没有问题呀。 谢谢高手指教!!
string cbScript = "function UseCallback(arg, context)" +
"{ alert('执行到这里应该可以执行客户端回调。');" +
cbReference + ";" + "}";
{
this.Button1.Attributes["onclick"]=
Page.ClientScript.GetCallbackEventReference(this,
"arg", "GetRandomNumberFromServer", "context");
}少绕javascript的弯子,直接对控件办事。
"'arg'", "GetRandomNumberFromServer", "'context'");
他的这两个参数是作为UseCallback函数的参数提供的……
也就是:string cbScript = "function UseCallback(arg, context)"
this.Button1.Attributes["onclick"]=
Page.ClientScript.GetCallbackEventReference(this,
"''", "GetRandomNumberFromServer", "''");比较直接了当一些,一下子简单了,不绕javascript,比较可靠。
再次感谢楼上这么多朋友的指教。<%@ Page Language="C#" AutoEventWireup="true" CodeFile="002.aspx.cs" Inherits="test01_002" %><!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 id="Head1" runat="server">
<title>无标题页</title>
</head>
<script type="text/javascript">
function GetMessageFromServer()
{
var arg="提交的值!"; //此处可以自己定义上传的参数
var context="";
<%= ClientScript.GetCallbackEventReference(this, "arg", "JSCallback", "context")%>;
}
function JSCallback(result, context)
{
// 当回调结束后将执行这里的方法,把从服务器端获取的值进行客户端操作
document.forms[0].TextBox1.value = result;
}
</script><body>
<form id="form1" runat="server">
<div>
<input type="button" id="Button1" value="Get Message" onclick="GetMessageFromServer()"/><br />
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
</div>
</form>
</body>
</html>
后台代码:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;public partial class test01_002 :
System.Web.UI.Page, ICallbackEventHandler {
string callbackResult;
protected void Page_Load(object sender, EventArgs e)
{
}
public void RaiseCallbackEvent(string eventArgument)
{
// 服务器端操作
callbackResult = "处理过的:" + eventArgument;
}
public string GetCallbackResult() {
return callbackResult;
}
}
我也遇到同样的问题了
无为搜索引擎开始测试了啊
(第三次开放测试啊) 网站运行后的效果请参见:
http://219.233.38.213/Search/WuWei.aspx
代码下载地址 :http://www.ofile.cn/se.rar
前两次用 CGI+html做了一个版本还做了一个 Java版本 (这次比较忙,所以没来的及更新,有需要的跟我说一声啊)
这次用 C# ASP.NET做一个 玩玩
做的不好,请大家做指教啊!
这次还实现了计算器功能啊
可以搜索一下 sin(1+2) 看看
另外 sh=1&sf=1&ua=1&sa=1&st=1&wh=1&ph=1 把这里面的 1改成 0看看 每个部分都是可以控制的:)
至于为什么要把客户端网站部分开源,请参考我第二次开放测试时即兴写的文章 : 最近我研究搜索引擎 七 (长长中国人的志气篇)
http://www.baidu.com/s?wd=%D7%EE%BD%FC%CE%D2%D1%D0%BE%BF%CB%D1%CB%F7%D2%FD%C7%E6%C6%DF&cl=3
承盟广大网友看的起 该文目前已经被全国 2000多网站转载
先说一下技术指标: 本次我收录了全国30多万个一、二级域名, 网页采集用了三周时间,目前已经采集了 12万网站,平均每个网站收录 30篇网页,索引进行了 10天,
目前已经索引了 100多万网页 。 搜索核心部分采用这次采用 C 语言开发。 客户端提供三个版本一个CGI+HTML版本,一个 Java版本,一个 ASP.NET版本。代码下载地址 :http://www.ofile.cn/se.rar
搜索网站客户端(.NET版本)整体解决方案(源代码)
(第三次开放测试啊) 网站运行后的效果请参见:
http://219.233.38.213/Search/WuWei.aspx