我使用__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时一定是个错误。
答案 0 :(得分:2)
对我来说_dopostback()不仅仅在IE和Chrome浏览器上启动。我已经解决了添加&#34; return false;&#34; javascript函数中的语句。例如: -
function test()
{
_dopostback("logout","");
return false;
}
现在工作正常。
答案 1 :(得分:1)
将以下脚本放在html文件的标题部分:
<script>
function __doPostBack(eventTarget, eventArgument) {
document.Form1.__EVENTTARGET.value = eventTarget;
document.Form1.__EVENTARGUMENT.value = eventArgument;
document.Form1.submit();
}
</script>
答案 2 :(得分:0)
删除__doPostBack
('OtherInformation')的第二个参数,并替换为空字符串''
。如果需要,可以将数据放在隐藏的输入字段中,并使用Request.Form
检索它。
答案 3 :(得分: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.在.c in page_load中添加以下行:
this.ClientScript.GetPostBackEventReference(this, string.Empty);
4.不要忘记实现界面:
public void RaisePostBackEvent(string eventArgument)
{
if (eventArgument == "do_something_good")
{
//bla
}
}
猜猜是什么 - 它甚至有效!
@Subhash Dike - PageMethods仅适用于静态方法,AFAIK。
答案 4 :(得分:0)
将您的代码更改为此:
setTimeout(function () { __doPostBack('btnSave', '') }, 500);
使用btnSave Id
。它将在所有浏览器中运行。