__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使用中的错误。
放置在您的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。
虽然这可能会在理论上回答这个问题,[这将是更可取的](http://meta.stackexchange.com/q/8259)在这里包括答案的重要部分,并提供供参考的链接。 – oers 2012-02-27 08:50:24
对我来说_dopostback()不是只在IE和Chrome浏览器上触发。我通过添加“返回false”来解决问题。在javascript函数中声明。例如: -
function test()
{
_dopostback("logout","");
return false;
}
现在它的工作正常。
在附注中,您希望获得此路线的任何特定原因。为什么不使用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
有没有机会在页面的URL中使用“alert”字符串? – jvanstry 2016-08-25 22:37:59