ClientScriptManager如何获取所执行脚本函数的返回值?

西溪晨风 2011-05-31 10:49:34

ClientScript.RegisterStartupScript(this.GetType(), "TestScript2", "<script>GetRegID(); </script>", false);


其中GetRegID有返回值,如何获取????
...全文
294 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
西溪晨风 2011-06-01
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 sp1234 的回复:]
你可以看一下asp.net服务器控件源代码,Button控件、DropdownList控件等等,所有需要回发并准确触发后台事件的控件,全都具有IPostBackEventHandler这个接口。

现在,你的脚本并不想去触发其它控件的事件,就是想触发当前page(或者ascx)的AfterGetRegID。那么你只要为你的Page或者UserControl声明IPostBackEventHan……
[/Quote]

非常感谢啊!
西溪晨风 2011-06-01
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wxr0323 的回复:]
不好意思 少俩括号


C# code
Page.ClientScript.RegisterStartupScript(GetType(), "", "<script>alert('" + GetRegID() + "');</script>");
[/Quote]

这个不行吧,接受了放哪里呢?
西溪晨风 2011-06-01
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 sp1234 的回复:]
引用楼主 awenson 的回复:
C# code

ClientScript.RegisterStartupScript(this.GetType(), "TestScript2", "<script>GetRegID(); </script>", false);



其中GetRegID有返回值,如何获取????


类似于:

C# code
ClientScri……
[/Quote]

如果返回的是一个javascript数组,应该怎么处理呢?
  • 打赏
  • 举报
回复
你可以看一下asp.net服务器控件源代码,Button控件、DropdownList控件等等,所有需要回发并准确触发后台事件的控件,全都具有IPostBackEventHandler这个接口。

现在,你的脚本并不想去触发其它控件的事件,就是想触发当前page(或者ascx)的AfterGetRegID。那么你只要为你的Page或者UserControl声明IPostBackEventHandler这个接口,然后上面的GetPostBackEventReference 所产生的脚本就会执行回发到页面控件(或者用户控件)上来了。
  • 打赏
  • 举报
回复
解释一下:

当你点击一个Button按钮,asp.net服务器端可以准确地执行其click事件。类似地其它控件也是如此。但是没有控件,如何让客户端脚本通知asp.net准确地执行服务器端专门为特定事件所属写的代码?

那么这就是 GetPostBackEventReference 要做的事。它自动地向html输出流中注册了一个 __doPostback(...) 代码,并且服务器端会准确地去执行你所注册的AfterGetRegID事件下的代码。

这个机制是基于IPostBackEventHandler这个接口的,专门用来处理从客户端向服务器端回发事件通知机制。
koukoujiayi 2011-05-31
  • 打赏
  • 举报
回复
页面添加一个隐藏域,如:
<input id="Hidden1" type="hidden" />

后台:
ClientScript.RegisterStartupScript(this.GetType(), "TestScript2", "<script>document.getElementById('Hidden1').value= GetRegID(); </script>", false);

后台获得返回值:
ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert(document.getElementById('Hidden1').value)</script>", false);
  • 打赏
  • 举报
回复
嗯,可能需要将你函数的值先保存一下,比如说
ClientScript.RegisterStartupScript(this.GetType(), "TestScript2", 
"document.getElementById('hidden_field1').value=GetRegID();"+
this.Page.ClientScript.GetPostBackEventReference (this,"AfterGetRegID")+";", true);

回发时,你再去读取那个用来保存GetRegID()的结果的控件的值。
子夜__ 2011-05-31
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 sp1234 的回复:]

sorry! 写错了,应该是C# code
ClientScript.RegisterStartupScript(this.GetType(), "TestScript2",
this.Page.ClientScript.GetPostBackEventReference (this,"GetRegID"), true);


可以看msdn:http://msdn.microsof……
[/Quote]
  • 打赏
  • 举报
回复
sorry! 写错了,应该是
ClientScript.RegisterStartupScript(this.GetType(), "TestScript2", 
this.Page.ClientScript.GetPostBackEventReference (this,"GetRegID"), true);


可以看msdn:http://msdn.microsoft.com/zh-cn/library/system.web.ui.clientscriptmanager.getpostbackeventreference(v=vs.80).aspx
子夜__ 2011-05-31
  • 打赏
  • 举报
回复
不好意思 少俩括号

Page.ClientScript.RegisterStartupScript(GetType(), "", "<script>alert('" + GetRegID() + "');</script>");
子夜__ 2011-05-31
  • 打赏
  • 举报
回复
            ClientScript.RegisterStartupScript(this.GetType(), "TestScript2", "<script>alert'" + GetRegID() + "'</script>", false);
  • 打赏
  • 举报
回复
[Quote=引用楼主 awenson 的回复:]
C# code

ClientScript.RegisterStartupScript(this.GetType(), "TestScript2", "<script>GetRegID(); </script>", false);



其中GetRegID有返回值,如何获取????
[/Quote]

类似于:
ClientScript.RegisterStartupScript(this.GetType(), "TestScript2", 
this.Page.ClientScript.RegisterRequiresPostBack(this,"GetRegID"), true);

自己搜索一下关于自定义回发机制的说明吧。
暖枫无敌 2011-05-31
  • 打赏
  • 举报
回复

ClientScript.RegisterStartupScript(this.GetType(), "TestScript2", "<script>"+GetRegID()+"</script>", false);

62,266

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧