0

尝试将值 (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 集合,因为该控件包含代码块(即<% ... %>)。

4

3 回答 3

0

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

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;
   }
}
于 2012-10-01T14:49:26.677 回答
0

首先将值绑定到隐藏控件

然后从隐藏控件中获取值

于 2012-10-01T14:16:11.587 回答
0
<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); 
    }
于 2012-10-01T14:24:16.643 回答