Pregunta

¿Puedo establecer algún tipo de variable global para la longitud de una sola Solicitud, de modo que todos los controles de la página puedan responder a ella sin tener que pasarla a cada uno de ellos?

Por ejemplo, si alguien presiona el botón Guardar en mi MasterPage, ¿puedo configurar algo para que cada UserControl en mi página pueda tener una carga de página como:

protected void Page_Load(object sender, EventArgs e)
{
    if (isSaving) // isSaving is a global variable
    {
        saveData();  // save myself
    }
    loadData();
}

Parece mucho más fácil que hacer que un delegado de la página maestra llame a la función de guardado de la página, que luego llama UC1.saveData () a cada UserControl, aunque sé que es mejor el pensamiento orientado a objetos.

¿Fue útil?

Solución

Sí, puedes. Mire el lugar obvio: HttpContext y la colección HttpContext.Current.Items que siempre están accesibles durante el manejo de la solicitud (consulte http://msdn.microsoft.com/en-us/library/system.web.httpcontext.items.aspx ).

Al igual que una pista :

public static class RequestScopedData
{
    private const string key = "key_that_you_choose";
    public static bool IsSaving
    {
        get
        {
            object o = HttpContext.Current.Items[key];
            return Convert.ToBoolean(o);            
        }
        set
        {
            HttpContext.Current.Items[key] = value;
        }
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top