0

我有一个 ascx 控件,它在设计时放置了一个文字。在运行时,在 Page_Load 中,我将文字的 text 属性设置为我从数据库中检索的 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

您的 Javascript 中一定有错误,例如试图操作在您的脚本之前尚未加载的 DOM 的一部分。

以下按预期进行评估:

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。

然后使用thise代码(参考: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 回答