在不同的类之间传递值
本文关键字:之间 | 更新日期: 2023-09-27 18:28:07
我有两个独立的类:一个在tbIndexUI.aspx页面中,另一个在regular.cs类文件中。我想将两个数据成员从常规的.cs类文件传递到.aspx页面,但是每次"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;
}
}
我的常规类处理.cs 的代码
void sendInformation()
{
tbIndexUI.passData(numOfCols, itemsPerCol);
}
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
不要让类库类具有网页类的实例。相反,您希望.aspx页面/控件在"常规".cs文件中具有类的实例,因为这样可以使它们在多个页面中重复使用。
按照发布代码的编写方式,sendInformation
方法不能与任何其他网页一起使用,因为它是硬编码的,无法使用tbIndexUI
控件。
相反,无论类名是什么(你在发布的代码中没有指出),你都希望有一个包含sendInformation
方法的实例。这样做可以让类保存numOfCols
和itemsPerCol
值,并通过属性将它们公开给网页/控件。
相反,你可以这样写:
public class TheClassThatHoldsNumOfColsAndItemsPerCol
{
public int NumOfCols { get; set; }
public int ItemsPerCol { get; set; }
// Method(s) here that set the values above
}
现在,在您的aspx代码中,您有一个TheClassThatHoldsNumOfColsAndItemsPerCol
的实例,只要您将该实例存储在Session
缓存或ViewState
中,它就可以在页面回发中持久存在。