【问题标题】:Call VB.NET subroutine from Javascript?从 Javascript 调用 VB.NET 子程序?
【发布时间】:2011-06-27 20:25:55
【问题描述】:

我可以整天从 VB 调用 javascript。那里有很多例子。

问题是,我需要从 javascript 调用 VB.NET 函数,没有两种方法可以解决。这有点难找。

有人知道任何资源吗?

谢谢,

杰森

顺便说一句——Web/Page 方法不起作用。当 VB 代码隐藏触发时,我必须能够引用一个列表框和它的选定项。谢谢!

【问题讨论】:

  • 我猜这是某种网络应用程序,是吗?如果您想从客户端代码调用服务器端代码,只需设置一个操作方法 (MVC) 或只是一些离散的 URL 并发出一个正常的 HTTP 请求。你能更具体地说明你想要做什么吗?
  • VB.NET 对象是否是一个存在于浏览器中的 html 页面上的 ActiveX 组件?
  • 当然,我有一个包含多个文件名的列表框(它们位于网络驱动器上)。页面顶部有一个带有 File -> Delete(
    • 标签)的菜单栏,它启动了一个 javascript 函数。我需要 javascript 函数来启动我的 vb 函数。
  • ajent-j,我不确定。我有一个带有 vb 代码隐藏的 aspx 页面。抱歉,我应该指定的。

标签: javascript asp.net vb.net


【解决方案1】:

这是一篇有趣的文章,可能会帮助您了解如何强制回发并执行一些代码:http://weblogs.asp.net/mnolton/archive/2003/06/04/8260.aspx

【讨论】:

    【解决方案2】:

    你能再解释一下吗?

    如果背后的 VB 代码触发,那么肯定是回发了?并且该函数已触发,那么您为什么要再次调用该函数?也许您需要重新考虑如何从帖子中获取数据,返回页面?

    【讨论】:

      【解决方案3】:

      请记住,您仍在处理网络请求/响应。浏览器向您的 Web 服务器发送请求,Web 服务器构建响应并将其发送回浏览器。每个请求/响应对都相互独立:一旦响应发送到浏览器,Web 服务器就会处理所有用于填充请求的服务器资源。网络流量相对较慢,所以当 any javascript 代码运行时,您的服务器端页面对象早已不复存在。它不再存在了。

      ASP.Net webforms 通过 viewstate 做了很多努力来隐藏所有这些,但它仍然是这样。如果你想调用服务器端的 VB.Net 代码并且你不想使用普通的回发,你可以通过 ajax (webmethod) 来实现。诀窍是您必须编写代码来发送和响应您需要的任何信息,因为您已经将asp.net 内置的所有帮助抛到了窗外。

      这里的另一个选项是使用 javascript 来触发回发。这相对容易:您只需调用__doPostBack() 函数即可。困难的部分是您实际上并没有连接到服务器事件,因此您需要在页面加载中使用代码来检测您的特定请求并做出适当的反应。

      【讨论】: