문제

단일 요청의 길이에 대해 일종의 글로벌 변수를 설정할 수 있으므로 페이지의 모든 컨트롤이 각각을 통과하지 않고도 응답 할 수 있습니까?

예를 들어 누군가 내 마스터 페이지에서 저장 버튼을 누르면 내 페이지의 각 usercontrol이 다음과 같은 페이지를 가질 수 있도록 무언가를 설정할 수 있습니다.

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

MasterPage Call의 대의원을 페이지의 저장 기능을하는 것보다 훨씬 쉬운 것 같습니다. 그런 다음 uc1.savedata ()를 각 USERControl로 호출하지만 더 나은 대상 지향적 사고라는 것을 알고 있습니다.

도움이 되었습니까?

해결책

그래 넌 할수있어. 명백한 장소를보십시오 : HTTPContext 및 HttpContext.Current.Items 요청 처리 중에 항상 액세스 할 수있는 컬렉션 (참조 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