我正在尝试修复一个真正糟糕的 ASP.net 4.0 程序交给我。编写它的人没有使用正常的 asp.net 标准。我本人对 ASP.net 还很陌生,并尽可能地尝试了解更多有关它的信息。无论如何,它是一个带有 C# 代码的 ASP.Net 4.0 webforms 应用程序。
我正在处理一个页面,它调用了标记本身中的代码隐藏方法。我们可以调用这个方法获取detailById。此方法调用 Web 服务,该服务使用此 ID 查询数据库并将数据集返回给后面的代码。一旦收到所有这些数据,它就会以表格的形式写入屏幕。这就是这个方法。在此页面的底部存在执行不同功能的各种按钮。让我们以一个名为 Hello 的按钮为例。这个按钮所要做的就是访问在 detailById 方法中获得的字段之一(例如:用户名)。 如何使该变量值可用于方法背后的所有代码? 我考虑了以下想法:
像 detailById 这样的重新查询数据库来获取这个字段,但这似乎非常低效。
为页面创建了一个类级别的变量,并将其值设置为 detailById 方法中的 Username 变量。这没有用。当我点击“你好”按钮时,用户名不见了。我知道它是在 detialById 方法中获得的。
然后我认为回发可能是导致值消失的原因,因此我将 Username 值存储在 ViewState 变量中,而在 detailById 方法中。当我尝试访问此变量时,它也为空。我不知道为什么。
最后,我在 detailById 方法中将这个值放在 Session 中。这很有效,并且可以在我的各种代码背后的方法中引用该值。这感觉像是一种错误的方式来做到这一点。我对吗?
这样做的好/正确方法是什么?
我希望我把我的问题说清楚了。谢谢。