Вместо этого используйте ViewState страницы. Добавьте логическое свойство SentMail
на свою страницу и задайте для него значение true при отправке электронного письма. Тогда вы можете проверить If Not SentMail Then SendMail()
.
Public Property SentMail() As Boolean
Get
If ViewState("SentMail") IsNot Nothing Then
Return Convert.ToBoolean(ViewState("SentMail"))
Else
Return False
End If
End Get
Set(ByVal value as Boolean)
ViewState("SentMail") = value
End Set
End Property
Редактировать: Одна вещь, которую вы можете сделать, это выполнить проверку для If Not IsPostBack
в событии Page_Load
страницы и инициализировать свойство как false. Тогда единственным событием, которое должно установить для свойства значение True, будет метод, который фактически выполняет отправку почты:
Protected Sub btnSendMail_Click(ByVal sender as Object, ByVal e as EventArgs) Handles btnSendMail.Click
If Not SentMail Then
' Code to do the sending
SentMail = True
End If
End Sub
Вы можете сделать его немного более продвинутым, даже если страница будет по-прежнему пригодна для использования, помимо простой отправки электронного письма, если вам нужно, подключив к нему другие флаги, не относящиеся к состоянию просмотра, например SentEmailThisPostBack
, чтобы выполнить некоторый сброс этого значение может быть выполнено в соответствии с набором бизнес-правил или даже настроить пользовательский интерфейс для всех вводимых пользователем данных для выполнения сброса.