ASP.Net 为您提供了一种方法来构建调用以从 javascript 执行 PostBack。
ClientScriptManager.GetPostBackEventReference 方法将构建您需要在 javascript 中使用的代码,以从特定控件执行 PostBack
http://msdn.microsoft.com/en-us/library/system.web.ui.clientscriptmanager.getpostbackeventreference.aspx
下面是一个示例(在 VB.Net 中)。在代码隐藏中,我正在创建自己的 javascript 函数。ASP.Net 代码将在我的函数中插入 javascript 代码以执行“MyButton”控件的 PostBack。当页面建立后,这个javascript函数就可以使用了。当 javascript 代码调用此 javascript 函数时,它将执行 PostBack,这将模仿单击“MyButton”按钮时发生的操作。
Dim csm As ClientScriptManager = Page.ClientScript
Dim sb As New StringBuilder
sb.AppendLine("function handleDoPostBack() {")
sb.AppendLine(csm.GetPostBackEventReference(MyButton, ""))
sb.AppendLine("}")
csm.RegisterClientScriptBlock(Me.Page.GetType, "js_code__create_functions", sb.ToString, True)
希望这就是你要找的。
更新
下面是一个示例,说明如何调用在服务器端为您创建的 javascript 函数。
<input type="button" value="Click Me" onclick="handleDoPostBack();" />
我只是制作了一个普通的 HTML 按钮(而不是使用 ASP.Net 按钮),因为我不想让按钮 PostBack 的概念与它混淆。这只是一个 HTML 按钮,除了您编写的程序之外什么都不做。由于我在 onclick 中添加了 javascript 函数调用,因此当您按下按钮时,它将执行 PostBack。当这个 PostBack 发生时,它的行为就好像“MyButton”按钮被点击了一样;那将是页面某处的 ASP.Net 按钮。由于该按钮是一个 ASP.Net 按钮,它本身已经在执行 PostBack,这就是为什么我认为您为什么要以编程方式触发 PostBack 存在一些困惑。
您也可以直接在代码中调用 javascript 函数,如...
<script>
handleDoPostBack();
</script>
这将在代码遇到它时立即发生。或者,如果你把它放在一个 onload 事件中,那么它会在页面完成加载时被调用。但就像我在评论中提到的那样,你必须小心,因为你最终可能会遇到一个无限循环。
通过阅读您在其他答案中的一些评论,您尝试解决的问题似乎与您正在使用的 AJAX 面板有关。我不熟悉这些,所以我不确定为什么它不适合你,我不知道以编程方式触发 PostBack 是否会解决你的问题。
但是,如果您确实需要以编程方式触发 PostBack,则可以使用此代码。我在不希望页面上出现按钮但希望执行操作的情况下使用它。当我的页面上发生其他事情时,我会运行一些 javascript 代码,这些代码就像单击了一个按钮一样 - 我可以在服务器端处理该按钮单击。在我的 ASP.Net 页面中,我确实包含了该按钮,但随后我使用 CSS 来隐藏用户无法看到该按钮。所以用户看不到该按钮,但我的 javascript 代码可以调用我的 javacript 函数,该函数将模拟单击该按钮。