【问题标题】:Dynamically added javascript not evaluated in ascx control未在 ascx 控件中评估的动态添加的 javascript
【发布时间】:2012-03-06 15:34:46
【问题描述】:

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

【问题讨论】:

    标签: javascript asp.net dynamic-usercontrols


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        您需要使用 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);

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-08-17
          • 1970-01-01
          • 2021-09-25
          • 2011-01-04
          • 1970-01-01
          • 2010-11-20
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多