2011-12-31 3 views
5

Я объявил статический класс Global. В этом классе я объявил статическую строковую переменную LastID. Я назначаю значения этой статической переменной на разных веб-страницах. Теперь я хочу получить значение этой глобальной переменной на моей странице .aspx через jQuery. Можете ли вы предложить, как я могу получить стоимость? В моем классе 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; 

Теперь я хочу, чтобы получить это значение Global.ImportantData с JQuery. Как мне это сделать?

+1

Как и в сторону, будьте осторожны, ваш статический 'ImportantData' свойство будет разделяемые всеми потоками в пуле приложений. Поскольку несколько страниц могут обслуживаться параллельно несколькими потоками, назначение «Важная информация» без правильной блокировки приведет к условиям гонки и трудно диагностированным ошибкам. Я бы рекомендовал вместо этого использовать что-то вроде [HttpContext.Items] (http://msdn.microsoft.com/en-us/library/system.web.httpcontext.items.aspx). –

ответ

6

Вы можете сделать что-то вроде:

WebForms:

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

Razor:

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

Будьте уверены, чтобы полностью определить пространство имен Global, если вы не включили его в Интернете .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

+0

Да, вы можете. Вы «пишете» его прямо на страницу и разбираетесь с остальной частью javascript. –

+0

@ JamesD'Angelo ваш код для «веб-формы» был идеальным в соответствии с моим требованием. Спасибо большое. – Sukanya

0

Использование window.variablename или в JQuery стиле $.variablename для назначения и получить доступ к глобальным переменным

0

вы можете использовать микро-данные для сохранения/чтения вещи из JQuery:

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

или вы можете произвести вывод JSON ваших ASP.NET (т.е. globals.aspx), а затем вывести его с помощью вызова ajax/json, а затем проанализировать/сохранить/использовать по вашему сценарию oh .. и вы также можете использовать localStorage или cookie.

P.S. последние тоже решения менее «спагетти»

0

В вашей страницы:

this.RegisterStartupScript("ImportantData", "var importantData= '" + Global.ImportantData + "';"; 
Смежные вопросы