2013-02-21 66 views
0

我正在使用Page.ClientScript.RegisterStartupScript();顯示在asp.net C#在asp.net c#中不顯示消息框使用Page.ClientScript.RegisterStartupScript()

消息如果我寫了下面的代碼,然後它的工作

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

我檢查你的腳本 - 它的工作原理 – Alex 2013-02-21 10:19:13

+0

@voo但在我身邊它不起作用 – Pritesh 2013-02-21 10:29:37

+0

也許這個字符串包含引號,打破了腳本。你能調試,看看'Result'的價值嗎? – 2013-02-21 10:43:15

回答

3

當字符串包含單引號時,由於單引號也用於包裝傳遞到alert()的值,所以會中斷腳本。

爲了克服這個問題,逃避引號:

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

感謝它現在的作品 – Pritesh 2013-02-21 11:01:22

+0

我看不出這個答案後我的感受!我已經離開了我的代碼成功執行的希望! 非常感謝。我希望我可以upvote它100次... – 2016-09-03 13:05:03

+0

@Am_I_Helpful大聲笑,有時小事情很容易錯過... :) – 2016-09-03 15:13:00

0

上述解決方案並沒有爲我工作,但我的情況只是略有不同。

這工作得很好:

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