我有两个单独的类: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);
}
答案 0 :(得分: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 强>
答案 1 :(得分:0)
不要让您的类库类具有网页类的实例。您希望相反,您希望.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
中,那么它就可以在页面回发中保留。