【问题标题】:Adding a C# variable to javascript将 C# 变量添加到 javascript
【发布时间】:2011-10-23 07:04:33
【问题描述】:

我的标题中有以下代码块:

 <script type="text/javascript">
        $(document).ready(function () {
            $('#target').readmytweet({
                'color': 'black',
                'search': 'from:' + <%= GetUserName() %>,
                'user': <%= GetUserName() %>,
                'width': 600,
                'tweets': 10,
                'speed': 25
            });
        })
    </script>

protected string GetUsername()
        {
            return "somestring..";
        }

但是,我收到一条错误消息:

无法修改 Controls 集合,因为该控件 包含代码块(即 )。

有谁知道如何将 C# 变量从我的代码中传递到这个 jQuery 函数中而不会出现该错误?

提前致谢

【问题讨论】:

    标签: c# .net


    【解决方案1】:

    对于动态字符串:

    这似乎可行,尝试用引号将代码块包装起来,如下所示:

    '<%= GetUserName() %>'
    

    您可能还必须使用this 语句来访问该方法:

    '<%= this.GetUserName() %>'
    

    对于静态字符串:

    在您的 aspx 页面中将您的字符串声明为公共字符串:

    public string UserName = "somestring..";
    

    并通过以下方式访问它:

    var userName = <%=this.UserName%>;
    

    【讨论】:

      【解决方案2】:

      这是a well-known problem 在尝试将控件添加到包含代码块的页面时。

      一个简单的解决方法是改用数据绑定表达式,即使用&lt;%# ... %&gt; 而不是&lt;%= ... %&gt;。请注意,您必须在您的 Page_Load event 中调用 this.DataBind(); 才能使其正常工作。

      (顺便说一句,请记住您在 JavaScript 中插入的代码 will need to be properly quoted。)

      【讨论】:

        【解决方案3】:

        在 .aspx 页面中访问服务器端 C# 变量/属性。

        <script type="text/javascript">
          <% string username = Class.PropertName; %>
          var jsUsername = '<%: username %>';
        </script>
        

        【讨论】:

        • 5 年后,您的回答中没有任何新内容。我建议删除此答案。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-11
        • 1970-01-01
        • 2023-03-16
        • 2012-04-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多