2013-08-18 3 views
1

두 개의 별도 클래스가 있습니다. 1 tbIndexUI.aspx.cs 페이지와 다른 하나는 regular.cs 클래스 파일에 있습니다. 일반 .cs 클래스 파일의 두 데이터 멤버를 .aspx 페이지로 전달하려고합니다. 그러나 "Page_Load"메서드가 발생할 때마다 이전에 전달 된 모든 값이 다시 설정됩니다. "Page_Load"에서 모든 것을 주석 처리하려고 시도했지만 이벤트가 모두 함께 제거되었지만 매개 변수 값은 계속 재설정되었습니다.별도의 클래스간에 값을 전달합니다.

이러한 값을 전달하고 유지 관리하는 방법이 있습니까? 모든 사례는 내가 잃어버린 것처럼 매우 도움이 될 것입니다. 나는이 [example]을 보았지만 성공하지 못했습니다. 내 정규 수업 process.cs

void sendInformation() 
{ 
    tbIndexUI.passData(numOfCols, itemsPerCol); 
} 

답변

1
public partial class tbIndexUI : System.Web.UI.UserControl 
{ 
    public int numColumns 
    { 
     set 
     { 
      ViewState["numOfCols"] = value; 
     } 
    } 

    public int itemsPerColumn 
    { 
     set 
     { 
      ViewState["itemsPerCol"] = value; 
     } 
    } 
    public static void passData(int numOfCol, int itemsPerCol) 
    { 
     numColumns = numOfCol; 
     itemsPerColumn = itemsPerCol; 
    } 

    //when you need to use the stored values 
    int _numOfCols = ViewState["numOfCols"] ; 
    int itemsPerCol = ViewState["itemsPerCol"] ; 
} 

난 당신이 페이지와 페이지가로드

http://www.codeproject.com/Articles/31344/Beginner-s-Guide-To-View-State

+0

마우 사이에 데이터를 유지하는 다양한 방법에 대한 다음 가이드를 읽어 보는 것이 좋습니다, 나는 당신이 보여 ViewState를 사용하여 시도 귀하의 예를 들어 있지만 값을 보유하지 않습니다. 코드를 단계별로 실행하면 값이 제대로 선언되지만 aspx.cs 페이지에 입력되는 순간 Viewstates는 null로 재설정됩니다. 어떤 생각이 일어나고 있습니까? – snapplex

0

내 aspx.cs 페이지

public partial class tbIndexUI : System.Web.UI.UserControl 
{ 
    private int _numOfCols = 0; 
    private int itemsPerCol = 0; 

    public int numColumns 
    { 
     set 
     { 
      _numOfCols = value; 
     } 
    } 

    public int itemsPerColumn 
    { 
     set 
     { 
      _itemsPerCol = value; 
     } 
    } 
    public static void passData(int numOfCol, int itemsPerCol) 
    { 
     numColumns = numOfCol; 
     itemsPerColumn = itemsPerCol; 
    } 
} 

코드에 대한

코드는 클래스 라이브러리 클래스가 웹 페이지 클래스의 인스턴스를 가질 필요가 없습니다. 반대의 경우, .aspx 페이지/컨트롤에 "일반".cs 파일의 클래스 인스턴스가 있어야 여러 페이지에서 재사용 할 수 있기를 원합니다.

게시 된 코드가 작성된 방식으로 sendInformation 메서드는 tbIndexUI 컨트롤을 사용하기 위해 하드 코딩되어 있기 때문에 다른 웹 페이지와 함께 사용할 수 없습니다.

대신, sendInformation 메서드가있는 클래스 이름 (게시 된 코드에서 나타내지는 않음)이 포함 된 인스턴스를 갖고 싶습니다. 이 방법을 사용하면 클래스가 numOfColsitemsPerCol 값을 보유하고 속성을 통해 웹 페이지/컨트롤에 노출 할 수 있습니다.

대신 당신이 쓸 수 : 귀하의 영문 코드에서 이제

public class TheClassThatHoldsNumOfColsAndItemsPerCol 
{ 
    public int NumOfCols { get; set; } 
    public int ItemsPerCol { get; set; } 

    // Method(s) here that set the values above 
} 

을, 당신은 TheClassThatHoldsNumOfColsAndItemsPerCol의 인스턴스가 언제 당신은 Session 캐시에 해당 인스턴스를 저장하거나 ViewState가 그래서 페이지 포스트 백에 걸쳐 지속될 수 있습니다.

관련 문제