0

設計時にリテラルが配置された ascx コントロールがあります。実行時に Page_Load で、リテラルのテキスト プロパティを、データベースから取得した JavaScript に設定します。ただし、javascript コードは評価されていないようです。スクリプトを評価するにはどうすればよいですか?

.ascx:

<asp:Literal id="litTags" runat="server"></asp:Literal>

ascx.cs:

protected void Page_Load(object sender, EventArgs e)
  {
      //Set literal's text to the script
      litTags.Text = "Javascript tag and script from database";
  }
4

3 に答える 3

1

その js コードを適切なタグでラップしてください。

<script type="text/javascript">'
// js code here
</script>
于 2012-03-06T15:38:48.870 に答える
1

たとえば、スクリプトの前にロードされていない DOM の一部を操作しようとしているなど、Javascript にエラーがあるはずです。

以下は期待どおりに評価されます。

protected void Page_Load(object sender, EventArgs e)    {

        StringBuilder sb = new StringBuilder();

        sb.Append("<script type='text/javascript'>" + Environment.NewLine);
        sb.Append("alert('hello world');" + Environment.NewLine);
        sb.Append("</script>" + Environment.NewLine);

        litTags.Text = sb.ToString();

}
于 2012-03-07T14:22:23.963 に答える
0

ClientScript.RegisterClientScriptMethod でこれを行う必要があります。

マスター ページまたは親ページに ScriptManager を追加します。

次に、このコードを使用します (参照: http://msdn.microsoft.com/en-us/library/bahh2fef.aspx ) 。

Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "scriptname", "var variable = '" + dbVar + "';", True);

または、起動スクリプトの場合 (参照: http://msdn.microsoft.com/en-us/library/z9h4dk8y.aspx )

ClientScript.RegisterStartupScript(this.GetType(), "scriptname", "var variable = '" + dbVar + "';", True);

そのように文字通りのコントロールは必要ありません。

于 2012-03-06T15:40:48.980 に答える