我有一个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"; }
答案 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();
}