_doPostBack not defined
本文关键字:defined not doPostBack | 更新日期: 2023-09-27 18:28:45
我已经使用字符串生成器动态地编写了脚本,如下所示
public static void ShowMessage1(ENUM_MessageType pMessageType, string pMessage, Button c)
{
StringBuilder strScript = new StringBuilder();
strScript.Append("<script type='"text/javascript'" src='"").Append("/Scripts/jquery-1.4.1.js").Append("'"></script>");
strScript.Append("<script type='"text/javascript'" src='"").Append("/Scripts/jquery.msgBox.js").Append("'"></script>");
strScript.Append("<link rel='"stylesheet'" type='"text/css'" href='"").Append("/Styles/msgBoxLight.css").Append("'" />");
strScript.Append("<script type='"text/javascript'">");
strScript.Append("(function example()");
strScript.Append("{");
strScript.Append("$.msgBox({");
strScript.Append("title:'" + lMessageType + "'");
strScript.Append(",");
strScript.Append("content:'" + pMessage + "'");
strScript.Append(",");
strScript.Append("type:'" + lOptionType + "'");
strScript.Append(",");
strScript.Append("buttons: [{ value: 'Yes' }, { value: 'No'}],");
strScript.Append("success: function (result) {");
strScript.Append("if(result == 'Yes'){");
strScript.Append("javascript:_doPostBack('" + c.ClientID + "','');");
strScript.Append("}");
strScript.Append("}");
strScript.Append("});");
strScript.Append("})();");
strScript.Append("</script>");
if (page != null && !page.ClientScript.IsClientScriptBlockRegistered("alert"))
{
page.ClientScript.RegisterClientScriptBlock(typeof(enumClass), "info", strScript.ToString());
}
}
我得到了异常,因为ReferenceError: _doPostBack is not defined
有人能帮我吗
它应该是javascript
当前您有
strScript.Append("avascript:_doPostBack('" + c.ClientID + "','');");
应该是:
strScript.Append("javascript:__doPostBack('" + c.ClientID + "','');");
前面缺少j
。还要确保它的__
不是一个下划线。
看起来__doPostBack()
调用中缺少下划线。
此外,请查看渲染的JS:中的success
(function example() {
$.msgBox({
title : 'INFORMATION',
content : 'I am from client side',
type : 'confirm',
buttons : [{
value : 'Yes'
}, {
value : 'No'
}
],
success : function (result) {
if (result == 'Yes') {
javascript : __doPostBack('Button1', ''); // <--- this line
}
}
});
})();
如果您只是想在那里调用回发,请去掉javascript :
,使其读起来像这样:
strScript.Append("__doPostBack('" + c.ClientID + "','');");
此外,根据这个SO问题的答案,请确保页面上呈现了ASP.NET WebControl。当呈现WebControl时,__doPostBack()
会自动包含在页面上。因此,如果页面上没有__doPostBack()
方法,则可能会丢失该方法。
如果页面上没有任何asp.net服务器端回发控件,则会在客户端上引发"_doPostBack not defined"错误。为了避免上述错误,您可以尝试在页面加载事件中添加以下代码行:
protected override void OnPreLoad(EventArgs e)
{
this.Page.ClientScript.GetPostBackEventReference(this, string.Empty);
base.OnPreLoad(e);
}
GetPostBackEventReference返回一个字符串,该字符串可在客户端事件中用于导致回发到服务器
另一种方法是添加隐藏的asp:Button,它将注册与GetPostBackEventReference方法相同的脚本。