Ответ 1
Поиск GET после POST - http://en.wikipedia.org/wiki/Post/Redirect/Get - в основном, перенаправление на текущую страницу после завершения обработки вашего события.
Что-то вроде:
Response.Redirect(Request.RawUrl)
У меня есть команда, добавленная в мои сетки asp.net. После выполнения действия с помощью этой кнопки мы обновляем сетку, чтобы отразить новые данные. (в основном это действие дублирует строку сетки).
Теперь, когда пользователь обновляет страницу с помощью F5, отображается предупреждающее сообщение (для повторной отправки информации на сервер), если мы выбираем "повторить попытку", действие повторяется автоматически.
Я знаю, что это обычная проблема в asp.net, как мы можем лучше справиться с этим?
Поиск GET после POST - http://en.wikipedia.org/wiki/Post/Redirect/Get - в основном, перенаправление на текущую страницу после завершения обработки вашего события.
Что-то вроде:
Response.Redirect(Request.RawUrl)
Если вы считаете, что вам не нужна парадигма обратной передачи, вы можете посмотреть ASP.NET MVC.
Проблема заключается в том, что кнопки asp.net выполняют записи в форме, когда вы нажимаете кнопку. Если вы замените кнопку ссылкой, ваша проблема должна исчезнуть. Вы также можете использовать кнопку, которая выполняет функцию javascript, которая устанавливает document.location в адрес вашей страницы.
Если я хорошо понял, вам просто нужно проверить, находитесь ли вы в ситуации обратной связи перед заполнением своей сетки.
Предполагая, что вы делаете это на Page_Load
, просто выполните операцию с последующим тестом следующим образом:
private void Page_Load(object sender, EventArgs e)
{
if(!this.IsPostBack)
{
// populate grid
}
}
Вам нужно вызвать response.Redirect(Request.Url.ToString());
или вы можете обернуть сетку обновленной панелью и после каждой команды привязать источник данных к сетке
Внутри тэга <asp:Repeater>
поставьте это:
EnableViewState="false"
Это заставит ваш элемент управления обновляться каждый раз, когда загружается страница, независимо от того, является ли она обратной передачей или нет.
например: если вы нажмете на 'button', система поймает событие "button_click". если вы обновите страницу, система снова выполнит одно и то же событие. чтобы не иметь эту проблему, в вашем случае вставьте: на вашем мероприятии
private void button_click(object sender, System.EventArgs e)
{
button.Enabled =false;
button.Enabled =true;
}
- это то, что вы имели в виду?