从背后的代码调用javascript与从javascript调用代码

问题描述:

我有一个Web应用程序,需要访问代码背后的方法以及JavaScript方法。对于这个特定的实现,从程序流的角度来看,它们被调用的顺序并不重要。从背后的代码调用javascript与从javascript调用代码

我在寻找洞察时,这将是适合使用后面的代码来调用javascript和当它背后从代码中调用JavaScript将是适当的。在推进实施之前,我是否应该注意到这种做法会产生什么影响?

有没有一种最佳实践的方式来做到这一点还是非常具体的实际执行?

让我们来谈谈从JavaScript调用服务器端代码。这是通过使用Ajax来执行的。您可以在Web服务中调用Web方法,如果使用特殊属性修饰它们,也可以调用Page Methods。

从JS调用服务器侧的主要原因是用于使用Ajax功能。

从服务器端调用JS基本上是当你插入JavaScript代码放到页面,然后在客户端代码将在一些动作被调用。

UPDATE:

可能有一些其他的原因,也是在那里你需要调用服务器端JavaScript中这可以手动提交使用形式document.form.submit()。但我会说大多数时候90%以上的你调用服务器端代码来使用ajax异步执行一个动作。

对于第二种情形,当你想添加一个确认对话框成包含在GridView控件里的按钮一个常见的例子就可以了。在这种情况下,您将在gridview控件的databound事件中添加代码,并将javascript代码添加到gridview中包含的按钮。最后,当gridview被呈现时,gridview中的按钮会将javascript附加到它们上,当用户单击按钮时,弹出确认框。另一种情况可能是您想在回发发生后打开新的弹出窗口。

+0

你想说当你需要某种类型的Ajax功能时,使用Javascript调用服务器端代码吗?这是唯一的时间还是有其他考虑? 另外,你能否详细说明你对第二种情况的讨论?我了解如何,但何时/为什么要将JavaScript注入页面供以后调用? – mwright 2010-03-08 16:48:02

+0

我编辑了我的答案! – azamsharp 2010-03-08 16:59:16

你的意思是“代码隐藏”在服务器代码,对不对? JavaScript代码无法调用服务器代码。通常,您的服务器代码会输出JS变量,JS函数或任何其他客户端代码在编译时无法确定。

编辑:为了澄清,JS代码可以通过Ajax发送到服务器,这确实是“调用服务器代码”。我以为你问的是直接调用JS的代码隐藏功能,因为它们在Visual Studio中“在同一页面上”,除非你将这些功能公开为支持Ajax并使用某些客户端Ajax机制来调用,否则这是不可能的他们。

为了最好地回答你的问题,具体的使用案例会有所帮助。这样做没有一个普遍的正确或错误的理由 - 取决于你想要完成的事情。

+0

正在考虑的一个设置已经过测试,它的工作原理是onclick事件执行一个javascript函数,然后在该页面的代码隐藏中调用WebMethod。也许我不明白你的意思,但这似乎是一个选择? – mwright 2010-03-08 16:33:40

+0

实际上,JavaScript代码可能会对服务器执行回调。一种方法是使用ICallBackEventHandler接口(http://msdn.microsoft.com/en-us/library/system.web.ui.icallbackeventhandler。aspx) – 2010-03-08 16:53:47

+0

是的,你当然可以使用任意数量的Ajax方法从JS代码执行到服务器的帖子。这不同于“调用JS的后台页面代码”(本身不可能) - 您必须将方法明确地公开为服务器上启用Ajax的方法,或者将为此目的而构建的框架功能用作由@Tim Goodman提及。 – 2010-03-08 17:42:29