【问题标题】:Pass value from code-behind to JavaScript将值从代码隐藏传递到 JavaScript
【发布时间】:2012-10-01 14:12:29
【问题描述】:

尝试将值 (abc) 从代码隐藏传递到 JavaScript,但页面失败且无法加载。语法有问题吗?我注意到通常 以黄色突出显示,但在我的代码中并非如此。

<script src="../Scripts/jqModal.min.js" type="text/javascript"></script>
<script type="text/javascript">
    $().ready(function() {    });

    $("a").click(function() {
    if (this.id == "optionalFeatures_Online") {
        var abc = "<%=Variable_codebehind %>";
    }
        });
</script>

On_Load 事件背后的代码:

    protected override void OnLoad(EventArgs e)
    {
        Variable_codebehind = "hello world"; 
    }

来自日志文件的错误:

Web.HttpUnhandledException' 被抛出。 ---> System.Web.HttpException:无法修改 Controls 集合,因为该控件包含代码块(即 )。

【问题讨论】:

  • 语法看起来没问题。您是否在任何地方声明了变量Variable_codebehind?它必须是页面类中的 protectedpublic 成员,否则无法从标记中访问。
  • 首先,$().ready(function() { }); 没有意义。它需要包装你所有的javascript才能产生任何效果。此外,您还需要说出您想等待什么准备好……例如; $(document).ready(function() { // Code here });
  • 如果Variable_codebehind 内容中有双引号,那你就完蛋了。
  • 有什么错误。请提供更多背景信息以及您尝试解决此问题的其他方法。
  • Guff:我已将变量声明为:受保护的字符串 Variable_codebehind;

标签: c# javascript asp.net code-behind


【解决方案1】:

首先将值绑定到隐藏控件

然后从隐藏控件中获取值

【讨论】:

    【解决方案2】:
    <script src="../Scripts/jqModal.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(document).ready(function() {    
            $("a").click(function() {
                if (this.id == "optionalFeatures_Online") {
                    var abc = <%=Variable_codebehind %>;
                }
            });
        });
    </script>
    

    On_Load 事件背后的代码:

        protected override void OnLoad(EventArgs e)
        {
            Variable_codebehind = HttpUtility.JavaScriptStringEncode("hello world", true); 
        }
    

    【讨论】:

    【解决方案3】:

    您可以使用 Page.RegisterStartupScript 并从 Code-Behind 传递一些变量。将脚本放在一个 .js 文件中,并在代码隐藏的 OnLoad 方法上调用它:

    加载代码隐藏:

    Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "MyScript", String.Format("MyScript({0});", codeBehindVar));
    

    MyScript.js

    function MyScript(myVar)
    {
       var self = this;
       $("a").click(function() {
       if (this.id == "optionalFeatures_Online") {
          var abc = self.myVar;
       }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-30
      • 2010-10-21
      • 2014-01-01
      • 1970-01-01
      相关资源
      最近更新 更多