2011-08-09 81 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