2011-08-09 51 views
2

我有以下我的头的代码块:添加一个C#变量的JavaScript

<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函数而不会出现这个错误?

在此先感谢

回答

6

对于动态字符串:

这似乎是它的工作,尝试包裹带引号的代码块,因为这样的:

'<%= GetUserName() %>' 

,你也可以必须使用this声明来访问该方法:

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

一个静态的字符串:

声明你的字符串作为你的aspx页面公共字符串:

public string UserName = "somestring.."; 

,并通过访问它:

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

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

一个简单的解决方法是使用数据绑定表达式,即使用<%# ... %>而不是<%= ... %>。请注意,您需要在Page_Load event中拨打this.DataBind();才能使其工作。

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

0

一个.aspx页面内访问服务器端的C#变量/属性。

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

5年后,你的答案中没有新的东西。我建议删除这个答案。 – Seany84