vb.net viewstate与公共变量

时间:2013-02-21 17:56:16

标签: asp.net vb.net class variables viewstate

这是aspx页面的一些代码。 我不确定我是否应该使用公共变量或viewState

Partial Class madeUpName
 Inherits System.Web.UI.Page
  Public vin As String = ""
  Public stk As String = ""

 Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  'inside of here i use the variables
 end sub

 Protected Sub Page_Unload(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Unload
  'inside of here I also use the same variables
 end sub

我应该在我的班级中为页面使用viewState变量还是公共变量?看起来他们都达到了同样的目的。

3 个答案:

答案 0 :(得分:3)

如果希望值在回发之间保持不变,请使用ViewState

如果值只需要在页面的生命周期内存在,那么常规变量就可以了。

答案 1 :(得分:1)

ViewState用于在PostBacks之间保留WebForm的状态。如果您希望从WebForm中获取值到您的代码后面,那么请使用ViewState值,否则您可以使用SessionState或根据您尝试访问的数据,您可以使用{{ 1}}甚至Cookies。每个QueryString都会重置公共变量,除非您将其值保存在PostBackViewState等...

更多信息:

Understanding Asp.Net ViewState

Best way to save variables between postbacks asp.net?

答案 2 :(得分:1)

如果信息不是非常敏感,您可以将它们存储在隐藏的输入中:

<input type="hidden" name="myvar" value="123" />

我更倾向于把东西放在ViewState中。此外,您可以创建访问器,以便以后轻松访问这些值(请原谅我的C#语法):

public int MyValue
{
    get { return int.Parse(Request["myvar"]); }
}

当你可以在你的班级中使用它时,如属性。

否则,您可以将内容放入ViewState(类似)

public int MyValue
{
    get { return int.Parse(ViewState["myvar"]); }
}