Обновить страницу после действия обратной передачи в asp.net - PullRequest
15 голосов
/ 16 февраля 2009

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

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

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

Ответы [ 7 ]

32 голосов
/ 16 февраля 2009

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

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

Response.Redirect(Request.RawUrl)

2 голосов
/ 16 февраля 2009

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

2 голосов
/ 16 февраля 2009

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

1 голос
/ 02 апреля 2009

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

EnableViewState="false"

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

1 голос
/ 16 февраля 2009

Вам необходимо вызвать response.Redirect (Request.Url.ToString ());

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

1 голос
/ 16 февраля 2009

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

private void Page_Load(object sender, EventArgs e)
{
    if(!this.IsPostBack)
    {
        // populate grid
    }
}
0 голосов
/ 23 октября 2013

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

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

это ты о чем?

...