2012-03-06 61 views
0

我有一个ascx控件,它在设计时有一个字面值。 在运行时,在Page_Load中,我将文字的文本属性设置为从数据库检索到的javascript。 但是,它似乎没有评估JavaScript代码。我需要做什么才能评估脚本?在ascx控件中动态添加的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"; 
    } 

回答

1

确保你包裹在适当的标记,JS代码:

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

该代码被适当地缠绕。 – laconicdev 2012-03-06 15:41:48

0

你需要用ClientScript来做到这一点。 RegisterClientScriptMethod。

在您的母版页或父页上添加一个ScriptManager。

然后使用thise代码(参考:http://msdn.microsoft.com/en-us/library/bahh2fef.aspx

Page.ClientScript.RegisterClientScriptBlock(this.GetType(), “脚本名”, “var变量。= '” + dbVar + “';”,TRUE);

,或者如果作为启动脚本(参考:http://msdn.microsoft.com/en-us/library/z9h4dk8y.aspx

ClientScript.RegisterStartupScript(this.GetType(), “脚本名”, “var变量。= '” + dbVar + “';”,真);

你不需要这种文字控制。

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

}