Я пишу пользовательский элемент управления для моего сайта asp.net, для хранения данных. Он имеет два свойства:Мой контроль asp.net теряет свои значения свойств?
Private _includeTime As Boolean
Private _value As DateTime = Nothing
Public Property IncludeTime() As Boolean
Get
Return _includeTime
End Get
Set(ByVal value As Boolean)
_includeTime = value
End Set
End Property
Public Property SelectedDateTime() As DateTime
Get
Try
_value = DateTime.Parse(txtDate.Text)
If IncludeTime Then
_value.AddHours(Short.Parse(txtHour.Text))
_value.AddMinutes(Short.Parse(txtMinute.Text))
_value.AddSeconds(Short.Parse(txtSecond.Text))
End If
Catch ex As Exception
_value = Nothing
End Try
Return _value
End Get
Set(ByVal value As DateTime)
_value = value
End Set
End Property
Звоню пользовательский элемент управления следующим образом:
<my:DateTimeInput runat="server" includetime="true" ID="txtWhen" />
Это устанавливает includetime свойства правильно.
В моем бэкэнда код я также сделать это на Page_Load:
txtWhen.SelectedDateTime = now
Когда я пошагово с отладчиком, я вижу, что свойство получает значение, но когда Page_Load самого контроля нагрузки, свойство значение сбрасывается до нуля!
Page_Load контроля:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
lbltime.Visible = IncludeTime
If SelectedDateTime().CompareTo(Nothing) > 0 Then
txtDate.Text = SelectedDateTime.Date.ToShortDateString()
txtHour.Text = SelectedDateTime.Hour.ToString("D2")
txtMinute.Text = SelectedDateTime.Minute.ToString("D2")
txtSecond.Text = SelectedDateTime.Second.ToString("D2")
End If
End Sub
Любые идеи, почему это свойство теряет свою ценность?
Загрузка собственности SelectedDateTime происходит внутри Page_Load страницы. Так что это страница page_load -> control page_load, и она по-прежнему не устанавливается. Между афайком нет обратной передачи, или я что-то пропускаю. – Tominator