2011-12-31 27 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 + "';";