2011-12-31 23 views
5

He declarado una clase estática llamada Global. En esa clase, he declarado una variable de cadena estática LastID. Estoy asignando valores a esta variable estática en diferentes páginas web. Ahora quiero obtener el valor de esta variable global en mi página .aspx a través de jQuery. ¿Puedes sugerirme cómo puedo obtener el valor? En mi clase mundial, código es el siguiente:¿Cómo obtener el valor de la variable global en jquery?

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

estoy asignando el valor de esta manera:

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

Ahora quiero conseguir este valor Global.ImportantData con jQuery. ¿Cómo puedo hacer eso?

+1

Dicho sea de paso, tenga cuidado, su propiedad 'ImportantData' estática será compartido por todos los hilos en el grupo de aplicaciones. Dado que varias páginas pueden ser servidas en paralelo por varios hilos, la asignación a 'ImportantData' sin un bloqueo adecuado dará lugar a condiciones de carrera y errores difíciles de diagnosticar. Recomiendo usar algo como [HttpContext.Items] (http://msdn.microsoft.com/en-us/library/system.web.httpcontext.items.aspx) en su lugar. –

Respuesta

6

Usted puede hacer algo como:

Web Forms:

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

Razor:

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

Asegúrese de calificar totalmente el espacio de nombres global a menos que haya incluido en su Web .Config.

Editar

En respuesta a la observación, también se puede asignar a un campo oculto y justo analizarlo con jQuery así:

ASPX:

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

Código detrás:

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

hey podemos acceder a estas variables directamente, incluso si esto se inicializa en la clase del lado del servidor. o es que podemos acceder a variables estáticas o algo así, ¿puedes explicar el concepto? Como he usado campos ocultos en mi página para obtener todos los valores que necesito en jQuery ... :( – Murtaza

+0

Sí, puede. Lo "escribe" directamente en la página y se analiza con el resto del javascript. –

+0

@ JamesD'Angelo su código para 'formulario web' fue perfecto según mi requerimiento. Muchas gracias. – Sukanya

0

Uso window.variablename o en el estilo de jQuery $.variablename para asignar y acceder a las variables globales

0

puede utilizar micro-datos para almacenar/leer cosas de jQuery:

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

o puede producir una salida JSON por su ASP.NET (es decir globals.aspx) página y luego buscarlo con ajax/json llamada y luego analizar/almacenar/usar por su secuencia de comandos oh .. y también puede utilizar localStorage o cookies.

P.S. también las últimas soluciones son menos "spaghetti"

0

En su página:

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