2013-02-21 4 views
2

Это код для страницы aspx. Я не уверен, если я должен использовать общие переменные или VIEWSTATEvb.net viewstate vs public variable

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 переменные или общие переменные в моем классе страницы? Кажется, они оба добиваются того же.

+0

Публичный переменная не будет работать, потому что класс разрушается и заново создается между каждым запросом. –

+0

@NateZaugg, я даже об этом не думал, но теперь, когда вы сказали, что это имеет смысл. благодаря – Kevin

ответ

3

Используйте ViewState, если вы хотите, чтобы значения сохранялись между обратными передачами.

Если значения должны существовать только для времени жизни страницы, регулярные переменные будут делать только штрафы.

1

ViewState используется для сохранения состояния WebForm через PostBacks. Если вы хотите получить значения из вашего WebForm в свой код позади, тогда используйте значения ViewState, в противном случае вы можете использовать SessionState или в зависимости от данных, которые вы пытаетесь получить, вы можете использовать Cookies или даже QueryString. Общественные переменные будут сброшены с каждым PostBack, если не сохранить их значения в ViewState или SessionState и т.д ...

Подробнее:

Understanding Asp.Net ViewState

Best way to save variables between postbacks asp.net?

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