Обновите страницу после действия postback в asp.net

У меня есть команда, добавленная в мои сетки asp.net. После выполнения действия с помощью этой кнопки мы обновляем сетку, чтобы отразить новые данные. (в основном это действие дублирует строку сетки).

Теперь, когда пользователь обновляет страницу с помощью F5, отображается предупреждающее сообщение (для повторной отправки информации на сервер), если мы выбираем "повторить попытку", действие повторяется автоматически.

Я знаю, что это обычная проблема в asp.net, как мы можем лучше справиться с этим?

Ответы

Ответ 1

Поиск GET после POST - http://en.wikipedia.org/wiki/Post/Redirect/Get - в основном, перенаправление на текущую страницу после завершения обработки вашего события.

Что-то вроде:

Response.Redirect(Request.RawUrl)

Ответ 2

Если вы считаете, что вам не нужна парадигма обратной передачи, вы можете посмотреть ASP.NET MVC.

Ответ 3

Проблема заключается в том, что кнопки asp.net выполняют записи в форме, когда вы нажимаете кнопку. Если вы замените кнопку ссылкой, ваша проблема должна исчезнуть. Вы также можете использовать кнопку, которая выполняет функцию javascript, которая устанавливает document.location в адрес вашей страницы.

Ответ 4

Если я хорошо понял, вам просто нужно проверить, находитесь ли вы в ситуации обратной связи перед заполнением своей сетки.
Предполагая, что вы делаете это на Page_Load, просто выполните операцию с последующим тестом следующим образом:

private void Page_Load(object sender, EventArgs e)
{
    if(!this.IsPostBack)
    {
        // populate grid
    }
}

Ответ 5

Вам нужно вызвать response.Redirect(Request.Url.ToString());

или вы можете обернуть сетку обновленной панелью и после каждой команды привязать источник данных к сетке

Ответ 6

Внутри тэга <asp:Repeater> поставьте это:

EnableViewState="false"

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

Ответ 7

например: если вы нажмете на 'button', система поймает событие "button_click". если вы обновите страницу, система снова выполнит одно и то же событие. чтобы не иметь эту проблему, в вашем случае вставьте: на вашем мероприятии

private void button_click(object sender, System.EventArgs e)
{
    button.Enabled =false;
    button.Enabled =true;
}

- это то, что вы имели в виду?