使用asp.net中的codebehind函数执行clientside javascript函数

时间:2010-01-04 21:32:15

标签: asp.net javascript jquery ajax callback

我一直在ASP.NET 2.0项目中使用Anthem.NET进行一些辅助项目,并且对于这个框架看起来独特的一个功能强大的问题有疑问。我使用过Telerik和Microsoft ASP.NET AJAX框架,并且能够在代码隐藏页面(服务器端)接缝中的“ajaxified”控件内执行JavaScript函数。

国歌的例子可以在这里找到: http://anthem.talloaksoftware.com/InvokeClientSideFunctionAfterCallBack.aspx?1

基本上,您使用Ajax Update Panel(在Anthem框架中)包装文本框和按钮,然后在代码隐藏(或内联代码)页面中,您可以在回调完成后执行javascript函数。但是,您的服务器端代码实际上指定了将运行的JavaScript代码。

实施例: 单击一个按钮时执行以下代码,该按钮在向服务器执行ajax请求后,执行指定服务器端的JavaScript函数。

Anthem.Manager.AddScriptForClientSideEval("ClientSideFunction();");

因此,只要JavaScript函数“ClientSideFunction()”存在,它就会在回调完成后执行。我可以立即看到包含jQuery和利用这个功能将如何组成一个非常有趣的组合。代码仍然可以用传统的回发模型编写,但可以在执行服务器端代码后调用JavaScript代码。这将允许服务器端代码使用内置函数的jQuerys来“动画化”HTML对象。

我的问题是,如何使用.NET Framework 3.5中内置的ASP.NET AJAX 3.5复制此行为?它可以像Anthem.NET框架一样容易复制吗?

Anthem不再是一个活跃的项目(在sourcefourge上),所以我觉得使用支持和流行的ASP.NET AJAX框架(特别是4.0即将推出)构建新项目是明智的,所以我正在寻找一个等效的解决方案

1 个答案:

答案 0 :(得分:3)

非常简单,当更新面板正在更新时(在方法.Update()之前),你需要在页面上有一个ScriptManager,然后在服务器端使用:

ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "uniqueJSBlockName", "ClientSideFunction();", true);

将执行名为ClientSideFunction()的函数,您可以保存已在页面上注册的必要的js函数。