自定义处理程序中的registerClientScriptBlock?

时间:2009-06-11 22:06:14

标签: asp.net javascript asp.net-ajax page-lifecycle

我在ASP.NET中使用自定义控件来处理文件上传。控件在代码隐藏中有一个处理程序,使用类似这样的东西:

Protected Sub UploadFileComplete(ByVal sender As Object, ByVal e As UploadControl.FileUploadCompleteEventArgs) Handles UploadControl.FileUploadComplete

在该子目录中,我回发到服务器并对数据库做了一些工作,但是当我回来时,我希望JavaScript在那时注册。

但是,当我使用Page.ClientScript.RegisterClientScriptBlockScriptManager.RegisterClientScriptBlock时,脚本不会加载到页面上。我需要这个JavaScript来运行和更新页面,并关闭上传对话框窗口。我认为是因为页面已经加载了。

有没有人对如何做到这一点有任何好的想法?

1 个答案:

答案 0 :(得分:0)

好吧原来就是这样......

在服务器端(代码隐藏)的UploadFileComplete()子域中,您可以使用EventArgs方法访问该e.CallbackData = [WHATEVER]变量。

然后在你的javascript中,你使用这个内置的客户端功能:

function UploadComplete(args){
    alert(args.callbackData);
}

并且args.callbackData变量包含您通过服务器端放入的任何内容。我觉得很漂亮!但很难弄清楚原因是他们没有很好地记录下来。

这样,您无需添加自己的RegisterClientScriptBlock方法,因为您可以使用内置方法将任何内容传递给JavaScript。