我有4个视图的多视图。要在视图之间切换,我使用4个按钮,并将多视图的activeview索引切换到每个按钮的click事件内的相关视图。
在每个视图中都有各种控件来捕获数据。然后在最终视图的底部有一个提交按钮,用于将所有数据写入数据库。
我想要实现的是捕获用户单击按钮移动到每个视图(最终将写入数据库)的时间戳。我可以通过在每个4个按钮的单击事件中使用以下代码来为变量分配时间戳
Dim phase1TimeStamp as string = DateTime.Now.TimeOfDay.ToString()
问题是,当我在提交按钮的click事件中将记录写入数据库时,它无法看到分配给这些时间戳变量的值。
有没有办法可以将这些变量值传递给提交按钮点击事件,还是有不同的方法可以实现这一点?感谢
答案 0 :(得分:2)
最简单的方法是将变量保存到session,然后检索它。你没有说这是ASP .NET Web Forms还是MVC,所以我会给你一个选项。 MVC有几种不同的方法可以实现这一点(ViewData,ViewBag,TempData或直接到Session)。我对Web Forms并不熟悉,但你至少可以保存到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”)具有某种唯一标识符的案例。
答案 1 :(得分: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
中的所有内容都存储为Object
,因此当您想要检索值时,您需要将值转换为String
。