Как очистить все поля формы от кода - позади?

HTML имеет входной тип кнопки для сброса всех полей в форме к их начальному состоянию за один шаг: <input type="reset" ... />.

Существует ли подобный простой способ сбросить все поля формы aspx страницы из кода - позади? Или действительно ли необходимо сбросить все средства управления один за другим с TextBox1.Text=string.Empty, TextBox2.Text=string.Empty, и т.д.?

Заранее спасибо!

Обновление:

Контекст является простым Контактом / страница "Send us a message" с 8 asp:TextBoxes на странице (где пользователь вводит имя, адрес, телефон, электронную почту, сообщение, и т.д.). Затем он нажимает, отправляют, обработчик сообщений Onclick в коде - позади посылает электронное письмо некоторому администратору и все поля формы, заполненный пользователь должен быть освобожден и он получает уведомление в маркировке ("сообщение, отправленное blabla..."). Я хочу очистить поля формы, чтобы избежать, чтобы пользователь щелкнул еще раз по, отправляют, и то же сообщение отправляется во второй раз.

5
задан Slauma 10 April 2010 в 15:11
поделиться

2 ответа

Для каждого типа элемента управления нужно написать только форк, если только у одного из элементов управления нет чего-то особенного, что нужно сделать для его сброса.

foreach( var control in this.Controls )
{
    var textbox = control as TextBox;
    if (textbox != null)
        textbox.Text = string.Empty;

    var dropDownList = control as DropDownList;
    if (dropDownList != null)
        dropDownList.SelectedIndex = 0;
    ...
}

ДОБАВЛЕНИЕ Вы спросили, как очистить элементы управления, даже те, которые похоронены. Для этого вы должны создать рекурсивную процедуру, например, такую:

private void ClearControl( Control control )
{
    var textbox = control as TextBox;
    if (textbox != null)
        textbox.Text = string.Empty;

    var dropDownList = control as DropDownList;
    if (dropDownList != null)
        dropDownList.SelectedIndex = 0;
    ...

    foreach( Control childControl in control.Controls )
    {
        ClearControl( childControl );
    }
}

Итак, вы вызываете эту процедуру, передавая страницу:

ClearControls( this );
11
ответ дан 18 December 2019 в 06:34
поделиться

Для вашего сценария самый простой способ очистить поля, на мой взгляд, - это отключить ViewState ( EnableViewState = false ) элементов управления, которые должны отображаться пустыми после отправки.

Или, возможно, для всей страницы, если вам не нужно какое-то состояние.

1
ответ дан 18 December 2019 в 06:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: