2013-08-18 82 views
1

我有兩個單獨的類:1在tbIndexUI.aspx.cs頁面中,另一個在regular.cs類文件中。 我想將常規.cs類文件中的兩個數據成員傳遞給.aspx頁面,但每次「Page_Load」方法觸發時都會重置以前傳遞的所有值。我試着評論「Page_Load」中的所有內容,並且儘管一起刪除了方法,但事件仍然在重置中。在不同的類之間傳遞值

有沒有辦法將這些值傳遞給並維護它們?任何例子都會非常有幫助,因爲我迷路了。我看着這個[example]但沒有成功。

代碼爲我的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; 
    } 
} 

代碼爲我的普通班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文件中有類的實例,因爲這使得它們可以在多個頁面中重用。

您的發佈代碼被寫入的方式,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 
} 
在你的aspx代碼

現在,你有​​一個實例,隨時隨地你存儲例如在Session緩存或ViewState所以它可以跨頁回發堅持。