使用方法名称使用__DoPostBack调用服务器端方法

时间:2008-12-29 19:04:36

标签: asp.net server-side

我想使用__DoPostBack调用服务器端方法并生成HTML,但我不希望在我的页面中隐藏的ASP runat服务器控件可以通过其名称而不是控件的名称调用服务器端方法触发它??

5 个答案:

答案 0 :(得分:2)

每当我看到这个问题时,我都会有点紧张,因为提问者不太了解导致回复的所有影响,所以我想简要介绍一下:

  • 浏览器中的当前DOM实例已被销毁。就浏览器而言,您正在提交当前页面并请求完整的新页面。
  • 不仅会讨论服务器端方法,还会影响整个页面生命周期,包括任何所需的数据绑定或页面加载/初始化代码。它将全部从头开始重新渲染。

这真的是你想要发生的吗?

答案 1 :(得分:1)

如果我单击一个runatserver按钮,将会再次渲染所有页面。

我将控件名称作为参数调用__DoPostBack javascript函数,如果单击按钮或链接按钮,它的工作方式相同。

答案 2 :(得分:1)

了解ASP.Net处理AJAX功能或其他术语回调的各种方式,因为这似乎是您要做的事情。该方法必须存在于页面内,或者如果它位于控件中,则该控件必须存在ID才能识别单击了哪个按钮,因为可以在页面上多次重复相同的控件。

答案 3 :(得分:1)

正如乔尔所提到的,你可能会有一些意想不到的行为覆盖这样的回复。如果你完全理解发生了什么,那就没有错。

我认为你真正想要的是WebMethod。这将使您的页面保持不变,但允许您调用特定的服务器端方法:

public partial class _Default : Page 
{
  [WebMethod]
  public static string GetDate()
  {
    return DateTime.Now.ToString();
  }
}

Using jQuery to directly call ASP.NET AJAX page methods

答案 4 :(得分:0)

创建一个ID为“ DummyButton”,style="display:none"的虚拟按钮,并添加具有所需代码的click事件处理程序。从JavaScript脚本元素调用__doPostBack('<%= DummyButton.UniqueID %>');

您需要使用CSS隐藏虚拟对象;如果您设置了Visisble="false",则__doPostback不会进行常规的回发,因为它不会将按钮用作回发启动器元素。在这种情况下,服务器仍然会受到攻击,但是您可能会遇到奇怪的问题。