0

我有一个有 4 个视图的多视图。要在视图之间切换,我使用 4 个按钮并将多视图的 activeview 索引切换到每个按钮的单击事件内的相关视图。

在每个视图中都有各种控件来捕获数据。然后在最终视图的底部有一个提交按钮,用于将所有数据写入数据库。

我想要实现的是捕获用户单击按钮移动到每个视图(最终将被写入数据库)的时间戳。我可以通过在 4 个按钮中的每一个的单击事件中使用以下代码为变量分配时间戳

Dim phase1TimeStamp as string = DateTime.Now.TimeOfDay.ToString()

问题是,当我在提交按钮的单击事件中将记录写入数据库时​​,它看不到分配给这些时间戳变量的值。

有没有一种方法可以将这些变量值传递给提交按钮单击事件,或者有没有一种不同的方法可以完全实现这一点?谢谢

4

2 回答 2

2

最简单的方法可能是将变量保存到会话中,然后检索它。您没有说这是 ASP .NET Web 窗体还是 MVC,所以我将为您提供一个选项。MVC 有几种不同的方法可以实现这一点(ViewData、ViewBag、TempData 或直接到 Session)。我对 Web 表单不太熟悉,但您至少可以保存到 Session。

网络表格

保存到会话:

HttpContext.Current.Session("phase1TimeStamp") = phase1TimeStamp.ToString()

检索它(您可能必须转换它,具体取决于类型和您的 VB 设置):

Dim myVar as String = HttpContext.Current.Session("phase1TimeStamp")

MVC

保存到会话:

Session("phase1TimeStamp") = phase1TimeStamp.ToString()

检索它:

Dim myVar as String = Session("phase1TimeStamp")

关于 MVC 的注释:如果您希望它跨多个会话工作(IE,对于不同的用户,甚至对于同一个用户但打开多个选项卡),您需要在这种情况下附加标识符(“phase1TimeStamp”)与一些某种唯一标识符。

于 2013-07-17T14:22:01.053 回答
1

您可以将值存储在Session缓存中,如下所示:

Session("MultiView1_Clicked_DateTime") = DateTime.Now.TimeOfDay.ToString()
Session("MultiView2_Clicked_DateTime") = DateTime.Now.TimeOfDay.ToString()
Session("MultiView3_Clicked_DateTime") = DateTime.Now.TimeOfDay.ToString()
Session("MultiView4_Clicked_DateTime") = DateTime.Now.TimeOfDay.ToString()

Session值将跨页面请求存在于内存中。

注意:您可以随意命名该Session键,但要取回该值,您需要与该键名完全匹配。此外,其中的所有内容Session都存储为 an Object,因此String当您想要检索值时,您需要将值强制转换为 a。

于 2013-07-17T14:16:38.893 回答