动态添加的javascript未在ascx控件中评估

时间:2012-03-06 15:34:46

标签: javascript asp.net dynamic-usercontrols

我有一个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";
  }

3 个答案:

答案 0 :(得分:1)

确保将js代码包装在正确的标记中:

<script type="text/javascript">'
// js code here
</script>

答案 1 :(得分: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);

你不需要这样的文字控制。

答案 2 :(得分:0)

您的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();

}