ASP.Net - 在不同的按钮单击事件中使用变量值 - VB

时间:2013-07-17 14:13:30

标签: asp.net vb.net variables

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

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

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

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

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

有没有办法可以将这些变量值传递给提交按钮点击事件,还是有不同的方法可以实现这一点?感谢

2 个答案:

答案 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