2009-02-16 5 views
15

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

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

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

ответ

32

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

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

Response.Redirect(Request.RawUrl)

2

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

1

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

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

Вы должны вызвать response.redirect (Request.Url.ToString());

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

2

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

1

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

EnableViewState="false" 

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

+0

Почему никто не ответил на этот вопрос? – slamsal

+0

Не работал для меня. – Andy

-1

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

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

является то, что вы имели в виду?

+1

Это вовсе не вопрос. –

Смежные вопросы