我使用vb在Visual Studio中创建一个站点,我在page_load中有一个变量,但在按钮的事件处理程序中需要它的值来传递会话。
关于我如何做到这一点的任何建议?任何帮助表示赞赏
答案 0 :(得分:2)
您可以在Button的CommandArgument属性中存储值:
btn.CommandArgument = "Your value"
然后在处理事件时你可以把它拉出来:
CType(sender, Button).CommandArgument
如果需要多个参数,您还可以创建一个扩展Button的新类并创建如下所示的新属性:
Class SessionButton
Inherits Button
Public Property SessionGUID() As Guid
Get
Dim s As Guid = Nothing
If Not String.IsNullOrEmpty(ViewState("SessionGUID")) Then
s = New Guid(ViewState("SessionGUID").ToString())
End If
Return s
End Get
Set(ByVal value As Guid)
ViewState("SessionGUID") = value.ToString()
End Set
End Property
End Class
答案 1 :(得分:1)
您可以将其存储在viewstate支持的属性中:
Public Property MyStringVar() As String
Get
If ViewState("MyStringVar") = Nothing Then
Return String.Empty
End If
Return ViewState("MyStringVar").ToString()
End Get
Set
ViewState("MyStringVar") = value
End Set
End Property
现在使用此属性,您可以在页面加载时保存变量,并在按钮单击事件处理程序中访问它。
编辑:更新到VB
答案 2 :(得分:1)
你不能只让变量成为一个类范围的变量,而不是本地的吗?
答案 3 :(得分:1)
你在page_load之外声明变量然后你可以在你想要的地方使用它:)
答案 4 :(得分:0)
您还可以创建一个封装操作的类。然后,您可以捕获所需的任何数据,并在以后轻松添加。
void Page_Load()
{
myBtn.Click += new MyButtonClass(variable).Run;
}
class MyButtonClass
{
int Param;
MyButtonClass(int param)
{
Param = param;
}
public void Run(object sender, EventArgs args)
{
// Do something usefull
}
}
如果在每个Page_Load上创建/检索数据,这将有效。如果它被包裹在(!IsPostBack)中,则数据必须存储在会话中。幸运的是,可以很容易地修改类以从会话参数存储/加载变量。
我很抱歉c#代码,也许其他人可以翻译然后删除此消息?