繁体   English   中英

使用Page.ClientScript.RegisterStartupScript()在ASP.NET C#中未显示消息框

[英]Not showing message box in asp.net c# using Page.ClientScript.RegisterStartupScript()

我正在使用Page.ClientScript.RegisterStartupScript(); 在asp.net C#中显示一条消息

如果我写下面的代码,那么它的工作

 Page.ClientScript.RegisterStartupScript(this.GetType(), "ShowMessage", string.Format("<script type='text/javascript'>alert('{0}')</script>", "Record Saved"));
 Page.ClientScript.RegisterStartupScript(this.GetType(), "Error", string.Format("<script type='text/javascript'>alert('{0}')</script>", ex.Message.ToString()));

但是如果我写

string Result = objChap.Insert();
Page.ClientScript.RegisterStartupScript(this.GetType(), "Error", string.Format("<script type='text/javascript'>alert('{0}')</script>", Result));

那么它不起作用意味着该消息框未显示

我的完整代码是

protected void btnSave_Click(object sender, EventArgs e)
    {
        try
        {
            objChap.FK_SemesterID = Convert.ToDecimal(drplstSem.SelectedValue);
            objChap.FK_SubjectID = Convert.ToDecimal(drplstSub.SelectedValue);
            objChap.ChapterName= txtChap.Text;
            objChap.ChapterSName = txtChapShortName.Text;
            objChap.Remarks = txtRemarks.Text;
            objChap.Dta_User = Global.Dta_User;
            objChap.Dta_Users = Global.Dta_User;


            string Result = objChap.Insert();
            if (Result == "1")
            {

                Page.ClientScript.RegisterStartupScript(this.GetType(), "ShowMessage", string.Format("<script type='text/javascript'>alert('{0}')</script>", "Record Saved"));

            }
            else
            {
                Page.ClientScript.RegisterStartupScript(this.GetType(), "Error1", string.Format("<script type='text/javascript'>alert('{0}')</script>", Result));



            }

        }
        catch (Exception ex)
        {
            Page.ClientScript.RegisterStartupScript(this.GetType(), "Error", string.Format("<script type='text/javascript'>alert('{0}')</script>", ex.Message.ToString()));
        }
    }

当字符串包含单引号时,由于单引号还用于包装传递给alert()的值,因此它将破坏脚本。

为了克服这个问题,请不要使用引号:

Page.ClientScript.RegisterStartupScript(this.GetType(), "Error1", 
    string.Format("<script type='text/javascript'>alert('{0}')</script>", 
    Result.Replace("'", "\\'")));

上面的解决方案对我不起作用,但是我的情况略有不同。

这工作正常:

Page.ClientScript.RegisterStartupScript(this.GetType(), "JSscript", "alert('this is a test');", true);

这不是:

String MetaJS = Convert.ToString(aList["JavaScript"].Value); //alert('this is a test'); 
Page.ClientScript.RegisterStartupScript(this.GetType(), "MetaScript", MetaJS, true);

并且这不:

String MetaJS = Convert.ToString(aList["JavaScript"].Value); //alert('this is a test'); 
Page.ClientScript.RegisterStartupScript(this.GetType(), "MetaScript", string.Format("{0}", MetaJS.Replace("'", "\\'")), true);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM