【问题标题】:vb.net viewstate vs public variablevb.net 视图状态与公共变量
【发布时间】:2013-02-21 17:56:16
【问题描述】:

这是一个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 变量还是公共变量?似乎他们都实现了相同的目标。

【问题讨论】:

  • 公共变量将不起作用,因为该类在每个请求之间被销毁并重新创建。
  • @NateZaugg,我什至没有想到这一点,但现在你说这很有意义。谢谢

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


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    ViewState 用于在PostBacks 中保持 WebForm 的状态。如果您希望将 WebForm 中的值获取到后面的代码中,请使用 ViewState 值,否则您可以使用 SessionState 或根据您尝试访问的数据,您可以使用 Cookies 甚至QueryString。每个PostBack 都会重置公共变量,除非您将它们的值保存在ViewStateSessionState 等...

    更多信息:

    Understanding Asp.Net ViewState

    Best way to save variables between postbacks asp.net?

    【讨论】:

      【解决方案3】:

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

      <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"]); }
      }
      

      【讨论】:

        猜你喜欢
        • 2016-04-17
        • 2011-05-25
        • 1970-01-01
        • 2011-09-23
        • 2012-10-30
        • 1970-01-01
        • 2011-11-26
        • 2013-08-29
        相关资源
        最近更新 更多