1

2 つの別個のクラスがあります。1 つは tbIndexUI.aspx.cs ページにあり、もう 1 つは regular.cs クラス ファイルにあります。通常の .cs クラス ファイルから .aspx ページに 2 つのデータ メンバーを渡したいのですが、「Page_Load」メソッドが起動するたびに、以前に渡されたすべての値がリセットされます。「Page_Load」のすべてをコメントアウトしようとしましたが、メソッドをすべて削除するまでイベントが発生しましたが、パラメーター値はまだリセットされています。

これらの値を渡して維持する方法はありますか? 私が迷っているので、どんな例でも非常に役に立ちます。この[例]を見ましたが、うまくいきませんでした。

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);
}
4

2 に答える 2

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

于 2013-08-18T03:21:40.607 に答える
0

クラス ライブラリ クラスに Web ページ クラスのインスタンスを持たせないでください。反対に、.aspx ページ/コントロールに「通常の」.cs ファイルにクラスのインスタンスを含める必要があります。これにより、複数のページで再利用できるようになります。

投稿されたコードの記述方法では、コントロールsendInformationを使用するようにハードコーディングされているため、メソッドを他の Web ページで使用することはできませんtbIndexUI

代わりに、メソッドが含まれているクラス名 (投稿されたコードでそれを示していない) のインスタンスが必要ですsendInformation。このようにすることで、クラスはnumOfColsとのitemsPerCol値を保持し、プロパティを介してそれらを Web ページ/コントロールに公開できます。

代わりに、次のように書くことができます。

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

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

これで、aspx コードに のインスタンスができ、いつでもそのインスタンスをキャッシュTheClassThatHoldsNumOfColsAndItemsPerColに保存できるため、ページのポストバック間で永続化できます。SessionViewState

于 2013-08-18T03:20:09.603 に答える