2014-02-07 2 views
0

Мне нужно получить и установить обратную текущую страницу. Таким образом, пользователь может использовать это свойство с любой другой страницыЗначение свойства очищается на PostBack

И это мой код

Private _BackgroundColour As System.Drawing.Color 
    Public Property MenuBackColour() As System.Drawing.Color 
    Get 
     Return _BackgroundColour 
    End Get 
    Set(ByVal value As System.Drawing.Color) 
     _BackgroundColour = value 
    End Set 
    End Property 

    Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load 
    Try 
    NavigationMenu.BackColor = MenuBackColour 
    Catch ex As Exception     
    End Try 
    End Sub 

Но проблема стоимости недвижимости очищается от PostBack, так что я не в состоянии получить значение BackColor с другой страницы

ответ

1

Если ваша основная цель - сохранить или поделиться обратным цветом какого-либо элемента управления между разными страницами, в ASP.NET существует много способов сделать это. Вы можете сохранить значение в файлах cookie или сеансах или в кеше.

По желанию, если имущество должно быть использовано, я создаю Default.aspx как:

Public Class _Default 
    Inherits Page 

    Private Shared _BackgroundColour As System.Drawing.Color = Drawing.Color.Azure 
    Public Shared Property MenuBackColour() As System.Drawing.Color 
     Get 
      Return _BackgroundColour 
     End Get 
     Set(ByVal value As System.Drawing.Color) 
      _BackgroundColour = value 
     End Set 
    End Property 

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load 
     MenuBackColour = Drawing.Color.Red 
     Response.Redirect("Default1") 
    End Sub 
End Class 

Он будет автоматически перенаправлен на Default1.aspx, где есть контроль этикетки на этой странице , Он будет использовать _Default.MenuBackColour в качестве BackColor лейбла:

Public Class Default1 
    Inherits System.Web.UI.Page 

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
     Label1.BackColor = _Default.MenuBackColour 
    End Sub 

End Class 

Опять же, этот подход не рекомендуется. Если Default.aspx никогда не запускался (хотя бы один раз), значение MenuBackColour может быть не таким, как вы думаете. Я не буду поощрять людей сохранять какую-либо статическую переменную или свойство на странице .aspx для совместного использования.

+0

Так что это невозможно в собственности? –

+1

Да, это возможно. Я не думаю, что это хороший подход. На самом деле вы можете объявить MenuBackColour как статическое («Shared» в VB) и повторите попытку. – Johnny

+0

Можете ли вы внести изменения в свой код и произвести? –

2

В ответ на сообщение отправляются только элементы ввода.

Таким образом, они такие же, как и перед сообщением назад, что у них есть перед отправкой назад, есть и сейчас. Таким образом, на самом деле вы не «получаете» эти параметры по коду позади, вы только «устанавливаете» их и на серверных элементах управления с помощью viewstate, вы можете помнить эти параметры в ответном сообщении, но вы не можете изменить их на стороне клиента и ожидать, чтобы читать это изменение на сервере.

Здесь обходной путь. Либо используйте viewstate на странице, чтобы сохранить некоторые значения и сохранить их на обратной стороне, а также использовать скрытые элементы для использования в эфире, чтобы они были в ответном сообщении.

+0

Спасибо за ваш response.I не может получить очки, можете ли вы мне пояснить –

+0

Если вы хотите только помнить, что значения в быстром решении помещают runat = server –

+0

Этого можно достичь в Property? –

1

В веб-приложениях значения переменных просто стираются. Но очень просто сохранить эти ценности. Они могут сохраняться с использованием объекта Viewstate. Перед вызовом обратной передачи значение переменной сохраняется в объекте viewstate. На странице сбора данных значение viewstate может быть возвращено обратно.

// Сохранить значение в объекте ViewState перед тем PostBack

ViewState("myColour")="Black"; 

// Retrive значение из ViewState после PostBack

myColourProperty=ViewState("myColour").ToString(); 
Смежные вопросы