我想使用__DoPostBack调用服务器端方法并生成HTML,但我不希望在我的页面中隐藏的ASP runat服务器控件可以通过其名称而不是通过触发它的控件的名称来调用服务器端方法? ?
每当我看到这个问题时,我都会感到有些紧张,因为提问者不太了解导致回复的所有影响,所以我想简要介绍一下:
这真的是你想要发生的吗?
如果我单击一个runatserver按钮,将会再次渲染所有页面。
我使用控件名称作为参数调用__DoPostBack javascript函数,如果单击按钮或链接按钮,它的工作方式相同。
查看ASP.Net处理AJAX功能的各种方式或另一个术语的回调,因为这似乎是您正在尝试做的事情。该方法必须存在于页面内,或者如果它位于控件中,则该控件必须存在ID才能识别单击了哪个按钮,因为可以在页面上多次重复相同的控件。
正如乔尔所提到的,你可能会有一些意想不到的行为覆盖这样的后卫。如果你完全理解发生了什么,那就没有错。
我认为你真正想要的是一个WebMethod
。这将保持您的页面完整,但允许您调用特定的服务器端方法:
public partial class _Default : Page
{
[WebMethod]
public static string GetDate()
{
return DateTime.Now.ToString();
}
}
创建一个ID为“DummyButton”的虚拟按钮,style="display:none"
并添加一个包含所需代码的click事件处理程序。从javascript脚本元素调用__doPostBack('<%= DummyButton.UniqueID %>');
。
你需要用css隐藏假人;如果设置Visisble="false"
,__doPostback
将不会进行常规回发,因为它不会将该按钮用作Postback发起者元素。在这种情况下,服务器仍会受到攻击,但您可能会遇到奇怪的问题。