2011-12-31 25 views
5

我已經聲明瞭一個名爲Global的靜態類。在那個類中,我聲明瞭一個靜態字符串變量LastID。我在不同的網頁中爲這個靜態變量賦值。現在我想通過jQuery在我的.aspx頁面中獲取這個Global變量的值。你能建議我如何獲得價值嗎?在我的全局類,代碼如下:如何在jquery中獲取全局變量的值?

public static class Global 
{ 
    static string lastID; 
    public static string ImportantData 
    { 
     get 
     { 
      return lastID; 
     } 
     set 
     { 
      lastID = value; 
     } 
    } 
} 

我這樣分配值:

string LID = "MyID"; 
Global.ImportantData = LID; 

現在我想用jQuery這個Global.ImportantData值。我怎麼做?

+1

順便說一句,小心,你的靜態'ImportantData'屬性將通過在應用程序池中的所有線程共享。由於多個頁面可以由多個線程並行提供,因此在沒有正確鎖定的情況下分配給ImportantData將導致競爭條件和難以診斷的錯誤。我建議使用類似[HttpContext.Items](http://msdn.microsoft.com/en-us/library/system.web.httpcontext.items.aspx)的東西。 – 2011-12-31 07:13:39

回答

6

你可以這樣做:

的WebForms:

<script type="text/javascript"> 
    var importantData = '<%= Global.ImportantData %>'; 
</script> 

剃刀:

<script type="text/javascript"> 
    var importantData = '@Global.ImportantData'; 
</script> 

一定要完全限定全局的名字空間,除非你已經在你的網站包括它.CONFIG。

編輯

在迴應的意見,也可以將其分配到一個隱藏屬性,只是解析出來使用jQuery,以及:

ASPX:

<asp:HiddenField ID="ImportantData" runat="server" /> 
... 
<script type="text/javascript"> 
    var importantData = $("#<%= ImportantData.ClientID %>").val(); 
</script> 

代碼背後:

protected void Page_Load (object sender, EventArgs e) 
{ 
    ImportantData.Value = Global.ImportantData; 
} 
+0

嘿,我們可以直接訪問這些變量,即使這是在服務器端類上初始化。還是我們可以訪問靜態變量或什麼的,你能解釋一下這個概念嗎?因爲我已經在頁面上使用了隱藏字段來獲取我在jQuery中需要的所有值。:( – Murtaza 2011-12-31 07:09:55

+0

是的,你可以。你直接將其「寫入」到頁面,並用JavaScript的其餘部分進行解析。 – 2011-12-31 07:10:49

+0

@ JamesD'Angelo您的「網頁表單」代碼完美無缺,符合我的要求。非常感謝。 – Sukanya 2011-12-31 07:31:45

0

個使用window.variablename或jQuery的風格$.variablename分配和訪問全局變量

0

您可以使用微數據存儲/ jQuery的自讀的東西:

<input type="hidden" data-foo="bar" /> 

,或者你可以通過你的ASP.NET產生JSON輸出(即globals.aspx)頁面,而不是通過ajax/json調用來獲取它,而不是通過腳本解析/存儲/使用 哦..你也可以使用localStorage或cookies。

P.S.最後的解決方案也不太「意大利麪條」

0

在你的頁面:

this.RegisterStartupScript("ImportantData", "var importantData= '" + Global.ImportantData + "';";