2011-12-31 30 views
5

Tôi đã khai báo một lớp tĩnh có tên là Toàn cầu. Trong lớp đó tôi đã khai báo một biến chuỗi tĩnh LastID. Tôi đang gán các giá trị cho biến tĩnh này trong các trang web khác nhau. Bây giờ tôi muốn lấy giá trị của biến Global này trong trang .aspx của tôi thông qua jQuery. Bạn có thể đề nghị làm thế nào tôi có thể nhận được giá trị? Trong lớp toàn cầu của tôi, mã trông như thế này:Làm thế nào để có được giá trị của biến toàn cầu trong jquery?

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

tôi gán giá trị như thế này:

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

Bây giờ tôi muốn để có được giá trị này Global.ImportantData với jQuery. Làm thế nào để làm điều đó?

+1

Là một sang một bên, hãy cẩn thận, tĩnh 'tài sản ImportantData' của bạn sẽ được chia sẻ bởi tất cả các chủ đề trong hồ bơi ứng dụng. Vì một số trang có thể được phục vụ song song bởi một số luồng, gán cho 'Dữ liệu Quan trọng' mà không có khóa thích hợp sẽ dẫn đến các tình trạng chủng tộc và các lỗi khó chẩn đoán. Tôi khuyên bạn nên sử dụng một cái gì đó như [HttpContext.Items] (http://msdn.microsoft.com/en-us/library/system.web.httpcontext.items.aspx) để thay thế. –

Trả lời

6

Bạn có thể làm một cái gì đó như:

WebForms:

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

Razor:

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

Hãy chắc chắn để đủ điều kiện đầy đủ các không gian tên toàn cầu trừ khi bạn đã đưa nó vào web của bạn .Config.

Sửa

Để đối phó với những bình luận, bạn cũng có thể gán nó vào một lĩnh vực ẩn và chỉ phân tích nó ra với jQuery cũng như:

ASPX:

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

Mã phía sau:

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

hey chúng ta có thể truy cập trực tiếp các biến này, ngay cả khi điều này được khởi tạo trên lớp phía máy chủ. hoặc là chúng ta có thể truy cập vào các biến tĩnh hoặc một cái gì đó, bạn có thể giải thích khái niệm này không. Như tôi đã sử dụng các lĩnh vực ẩn trên trang của tôi để có được tất cả các giá trị mà tôi cần trong jQuery .. :( – Murtaza

+0

Vâng, bạn có thể. Bạn "viết" nó trực tiếp vào trang và nó được phân tích cú pháp với phần còn lại của javascript. –

+0

@ JamesD'Angelo mã của bạn cho 'biểu mẫu web' hoàn hảo theo yêu cầu của tôi. Cảm ơn rất nhiều. – Sukanya

0

Sử dụng window.variablename hoặc trong jQuery phong cách $.variablename gán và truy cập các biến toàn cục

0

bạn có thể sử dụng vi dữ liệu để lưu trữ/đọc thứ từ jQuery:

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

hoặc bạn có thể sản xuất ra JSON bằng ASP.NET của bạn (I E globals.aspx) và tìm nạp nó bằng ajax/json call và hơn parse/store/use bởi tập lệnh oh .. và bạn cũng có thể sử dụng localStorage hoặc cookie.

P.S. quá giải pháp cuối cùng là ít "spaghetti"

0

Trong trang của bạn:

this.RegisterStartupScript("ImportantData", "var importantData= '" + Global.ImportantData + "';"; 
Các vấn đề liên quan