C# _doPostBack未定义

C# _doPostBack未定义,c#,javascript,asp.net,C#,Javascript,Asp.net,我使用字符串生成器动态编写了脚本,如下所示 public static void ShowMessage1(ENUM_MessageType pMessageType, string pMessage, Button c) { StringBuilder strScript = new StringBuilder(); strScript.Append("<script type=\"text/javascript\" src=\"").Append("/Scrip

我使用字符串生成器动态编写了脚本,如下所示

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());
        }
    }
publicstaticvoidshowmessage1(枚举消息类型pMessageType,字符串pMessage,按钮c)
{
StringBuilder strScript=新建StringBuilder();
strScript.Append(“”);
strScript.Append(“”);
strScript.Append(“”);
strScript.Append(“”);
追加(“(函数示例()”);
strScript.Append(“{”);
追加($.msgBox({”);
追加(“标题:“+lMessageType+””);
strScript.Append(“,”);
追加(“内容:“+pMessage+””);
strScript.Append(“,”);
追加(“类型:”+lOptionType+”);
strScript.Append(“,”);
Append(“按钮:[{value:'Yes'},{value:'No'}],”;
Append(“成功:函数(结果){”);
追加(“if(result='Yes'){”);
Append(“javascript:_doPostBack(“+c.ClientID+”,“);”;
strScript.Append(“}”);
strScript.Append(“}”);
strScript.Append(“}”);”;
strScript.Append(“}”)();”;
strScript.Append(“”);
if(page!=null&&!page.ClientScript.IsClientScriptBlockRegistered(“警报”))
{
page.ClientScript.RegisterClientScriptBlock(typeof(enumClass),“info”,strScript.ToString();
}
}

我得到的异常是
ReferenceError:_doPostBack没有定义
有人能帮我吗

它应该
javascript
目前你有

strScript.Append("avascript:_doPostBack('" + c.ClientID + "','');");
应该是:

strScript.Append("javascript:__doPostBack('" + c.ClientID + "','');");

前面缺少
j
。还要确保它的
\uu
没有一个下划线

您的
\uuu doPostBack()
调用中似乎缺少下划线

另外,请查看渲染JS中的
成功

(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
            }
        }
    });
})();

另外,根据上的答案,确保有一个ASP.NET网络控件呈现到该页面<代码>\uuu doPostBack()在呈现网络控件时自动包含在页面上。因此,如果页面上没有回帖控件,则可能会丢失
\u doPostBack()
方法。

如果页面上没有任何asp.net服务器端回发控件,则客户端将抛出“\u doPostBack not defined”错误。为避免出现上述错误,可以尝试将以下代码行添加到页面加载事件中:

protected override void OnPreLoad(EventArgs e)
    {
        this.Page.ClientScript.GetPostBackEventReference(this, string.Empty);

        base.OnPreLoad(e);
    }
GetPostBackEventReference返回一个字符串,该字符串可在客户端事件中用于导致回发到服务器


另一种方法是添加隐藏的asp:Button,它将注册与GetPostBackEventReference方法相同的脚本

此外,它应该是__doPostBack@Deepak,使用双下划线解决问题了吗?如果我没记错的话,它是两个下划线(
\uu doPostBack
,而不是
\u doPostBack
),试着在doPostBack中添加一个下划线。让它成为我正在处理的同一个问题firefox@Dotnet,脚本呈现到页面后是什么样子?
(函数示例(){$.msgBox({title:'INFORMATION',content:'I from client-side',type:'confirm',按钮:[{value:'Yes'},{value:'No'}],success:function(result){if(result='Yes')){javascript:uu doPostBack('Button1','';}}}}}}();
你能检查一下有没有遗漏的tagHi吗?我在没有javascript的情况下,用这种方式累了,但仍然遇到同样的问题
protected override void OnPreLoad(EventArgs e)
    {
        this.Page.ClientScript.GetPostBackEventReference(this, string.Empty);

        base.OnPreLoad(e);
    }