如何在按钮的事件处理程序中使用page_load局部变量

时间:2009-04-27 17:12:21

标签: asp.net vb.net

我使用vb在Visual Studio中创建一个站点,我在page_load中有一个变量,但在按钮的事件处理程序中需要它的值来传递会话。

关于我如何做到这一点的任何建议?任何帮助表示赞赏

5 个答案:

答案 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#代码,也许其他人可以翻译然后删除此消息?