4

我使用 __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的使用出错了。

我关注了这篇文章:从 JavaScript 调用 ASP.NET 函数?

4

5 回答 5

2

对我来说 _dopostback() 不仅仅在 IE 和 chrome 浏览器上触发。我已经通过添加“return false;”来解决 javascript函数中的语句。例如:-

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

现在它工作正常。

于 2015-11-27T07:49:01.157 回答
1

将以下脚本放在 html 文件的标题部分:

<script>
    function __doPostBack(eventTarget, eventArgument) {
        document.Form1.__EVENTTARGET.value = eventTarget;
        document.Form1.__EVENTARGUMENT.value = eventArgument;
        document.Form1.submit();
    }
</script>
于 2011-04-24T13:14:07.283 回答
1

将您的代码更改为:

setTimeout(function () { __doPostBack('btnSave', '') }, 500);

使用btnSave Id. 它适用于所有浏览器。

于 2019-12-25T12:31:10.213 回答
0

删除 ('OtherInformation') 的第二个参数__doPostBack,并替换为空字符串''. 如果需要,您可以将该数据放在隐藏的输入字段中,然后使用Request.Form.

于 2012-02-08T14:42:40.963 回答
0

我也关注了你提到的同一篇文章,但遇到了一个错误,我尝试在这里使用其他答案,但它仍然没有用。

直到我找到这个帖子: http ://forums.asp.net/t/1197643.aspx (请看 NC01 的第 8 条回复)。

1.基本上这个想法是你的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.并在 page_load 的 .cs 中添加以下行:

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

4.不要忘记实现接口:

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

你猜怎么着——它甚至可以工作!

@Subhash Dike - PageMethods 仅适用于静态方法,AFAIK。

于 2012-02-23T18:49:37.207 回答