سؤال

هل يمكنني تحديد نوع المتغير العالمي لطول طلب واحد لذلك، حتى يتسنى لجميع الضوابط الصفحة يمكن أن تستجيب إليها دون الحاجة إلى تمرير من خلال كل منهم؟

وعلى سبيل المثال، إذا ضرب أحدهم على زر حفظ على بلدي MasterPage، يمكن أن أضع شيئا حتى أن كل UserControl على صفحتي يمكن أن يكون لها Page_Load مثل:

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

ويبدو مجرد أسهل كثيرا من وجود مندوب من masterpage استدعاء الصفحة لحفظ وظيفة، أي بعد ذلك يدعو UC1.saveData () لكل UserControl، على الرغم من أنني أعرف أن من الأفضل كائن التفكير الموجه.

هل كانت مفيدة؟

المحلول

نعم، يمكنك. نظرة على مكان واضح: لHttpContext وجمع HttpContext.Current.Items التي يمكن الوصول إليها أثناء التعامل مع الطلب دائما (انظر <لأ href = "http://msdn.microsoft.com/en-us/library/system.web.httpcontext.items. ASPX "يختلط =" noreferrer "> http://msdn.microsoft.com/en-us/library/system.web.httpcontext.items.aspx ).

وكما أن <م> تلميح :

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;
        }
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top