__doPostBack不为我工作

问题描述:

我使用__doPostBack的方式有错误吗?__doPostBack不为我工作

function displaymessage() { 
    var scl = "aaaaaa"; 
    var pageId = '<%= Page.ClientID %>'; 
    __doPostBack(pageId, 'OtherInformation'); 
    alert(scl); 
} 

<input type="button" value="Click me!" id="Button2" onclick="displaymessage()" /> 

当我按下按钮时,它应该调用代码文件中的RaisePostBackEvent,但它没有。如果我评论doPostBack它达到警报,但是当它被取消注释它不会。所以它必须是doPostBack使用中的错误。

我跟着这个帖子:Call ASP.NET function from JavaScript?

+0

在附注中,您希望获得此路线的任何特定原因。为什么不使用PageMethods(http://weblogs.asp.net/mschwarz/archive/2008/01/08/how-to-move-from-ajaxpro-to-asp-net-ajax-pagemethods.aspx)和相关的东西来自Jquery吗? – 2011-04-25 08:43:22

+0

有没有机会在页面的URL中使用“alert”字符串? – jvanstry 2016-08-25 22:37:59

放置在您的HTML文件的标题部分下面的脚本:

<script> 
    function __doPostBack(eventTarget, eventArgument) { 
     document.Form1.__EVENTTARGET.value = eventTarget; 
     document.Form1.__EVENTARGUMENT.value = eventArgument; 
     document.Form1.submit(); 
    } 
</script> 

放下你的__doPostBack(“OtherInformation”)的第二个参数,并与更换空字符串,''。如果需要,可以将这些数据放在隐藏的输入字段中,然后使用Request.Form进行检索。

我也跟着你提到的相同的帖子,并得到一个错误,我试图在这里使用其他答案,但它仍然无法正常工作。

直到我找到了这个帖子: http://forums.asp.net/t/1197643.aspx (外观由NC01取得第8回复)。

1.basically的想法是,你的aspx应该是这样的:

<script type="text/javascript" language="javascript"> 
    function myfunction() { 

       if ('<%=Page.IsPostBack%>' == 'False') { 
       var pageId = '<%= this.UniqueID %>'; 
        __doPostBack(pageId, 'do_something_good'); 
       } 
      } 
</script> 

2.然后在你的.cs你应该添加接口IPostBackEventHandler(例如:)

public partial class _default : System.Web.UI.Page, IPostBackEventHandler 

3.and在你的.cs中page_load加上这一行:

this.ClientScript.GetPostBackEventReference(this, string.Empty); 

4.不要忘记执行th e接口:

public void RaisePostBackEvent(string eventArgument) 
    { 
    if (eventArgument == "do_something_good") 
    { 
    //bla 
    } 
    } 

并猜测它 - 甚至可以工作!

@Subhash堤防 - PageMethods仅适用于静态方法AFAIK。

+0

虽然这可能会在理论上回答这个问题,[这将是更可取的](http://meta.stackexchange.com/q/8259)在这里包括答案的重要部分,并提供供参考的链接。 – oers 2012-02-27 08:50:24

对我来说_dopostback()不是只在IE和Chrome浏览器上触发。我通过添加“返回false”来解决问题。在javascript函数中声明。例如: -

function test() 
{ 
    _dopostback("logout",""); 
return false; 
} 

现在它的工作正常。