我有一个小班,里面只有几个属性。
这是一个例子:
public class clsRepLogs
public string those;
public string these;
public void setThoseandThese
{
//call a stored procedure
//get results
this.those = something;
this.these = somethingElse;
}}
来自我的first.aspx.cs
我调用set函数:
clsRepLogs cLog - new clsRepLogs()
cLog.setThoseandThese()
所以现在为属性分配了值。
我现在想在另一个aspx.cs文件中使用它们来填充表单......但是无法弄清楚如何找到它们......
我试过
clsRepLogs cLog;
lblThese.text = cLog.these;
但它给了我一个错误:“使用未分配的局部变量'cLog'
基本上,我如何告诉它使用我之前已经分配给该类实例的值?
我希望我能解释这一点,但我可能会对我正在做的事情有所了解。任何帮助表示感谢。
答案 0 :(得分:4)
听起来您想从多个ASPX页面访问该类的同一实例。有多种方法可以做到这一点;每用户解决方案是使用会话状态。
// page 1
var c = new clsRepLogs();
c.setThoseAndThese();
Session["mykey"] = c;
// page 2
var c = (clsRepLogs)Session["mykey"];
“mykey”可以是任何字符串。您可能还想在访问Session之前检查Session是否包含该值,例如if( Session["mykey"] != null ){ ... }
请记住:
供参考(替代方法):
Cache
对象。Application
对象;类似于Cache
但无法控制过期。答案 1 :(得分:0)
您需要初始化或设置cLog
到您想要的clsReport
实例。
答案 2 :(得分:0)
您没有实例化您的课程。它应该是
clsRepLogs cLog = new clsRepLogs();
或者,如果我误解了你的代码,
clsReport cLog = new clsReport();
编辑:
如果你需要保留它们,它应该是一个静态类,以便它不能被实例化。
public static class clsReport
{
public static string those;
public static string these;
public static void setThoseandThese
{
//call a stored procedure
//get results
this.those = something;
this.these = somethingElse;
}
}
很多这取决于你需要它如何运作。另外,我不是在Webforms应用程序中使内存中的对象/类永久化的专家。如果您想重新访问该类以获取这些值,我不确定它们是否仍然存在于内存中。
答案 3 :(得分:0)
您需要初始化cLog类:
clsRepLogs cLog = new clsReport();
lblThese.text = cLog.these;