Как остановить автоматическое нажатие кнопки на F5 и обновление страницы? - PullRequest
3 голосов
/ 15 февраля 2012

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

на странице ascx

   public event EventHandler<EventArgs> Add;

   protected void btnAdd_Click(object sender, EventArgs e)
    {
        if (Add != null)
             Add(sender, e);

    }

на докладчике

  AddListView.Add += delegate(object sender, EventArgs e)//AddListView is a Interface
  {
    Add();

  };

, когда я нажимаю на btnAdd, он работает нормально и запись добавляется, но когда я обновляю страницу браузера, с помощью F5 и щелчка мышью снова btnAdd срабатывает.Я попытался использовать

   // Page refresh F5 btn press
    protected override void LoadViewState(object savedState)
    {
        object[] AllStates = (object[])savedState;
        base.LoadViewState(AllStates[0]);
        _refreshState = bool.Parse(AllStates[1].ToString());
        _isRefresh = _refreshState == bool.Parse(Session["__ISREFRESH"].ToString());
    }

    // Page refresh F5 btn press
    protected override object SaveViewState()
    {
        Session["__ISREFRESH"] = _refreshState;
        object[] AllStates = new object[2];
        AllStates[0] = base.SaveViewState();
        AllStates[1] = !(_refreshState);
        return AllStates;
    }

Затем он работает нормально, но после обновления я не могу снова щелкнуть btnAdd, для щелчка по btnAdd, снова я делаю обновление, затем он работает нормально ..

Я вызываю этот элемент управления на каком-то другом элементе управления, и, поскольку у меня есть Datalist, нажатие на страницу элемента снова выполнит обратную передачу.

Как остановить автоматическое нажатие кнопки F5 или обновление страницы без нажатия btnAdd.

Пожалуйста, кто-нибудь, помогите мне ..

Ответы [ 2 ]

1 голос
/ 15 февраля 2012

Проверьте эту ссылку Обнаружить обновление браузера Избегайте возникновения событий в ASP.NET. см. Здесь

Надеюсь, это поможет.

0 голосов
/ 15 февраля 2012

Иногда просто Response.Redirect хорошо.Это в основном превращает исходный POST в другой запрос GET.Это работает до тех пор, пока вы сохраняете все размещенные части информации.В противном случае они больше не будут доступны, очевидно.

protected void Button1_Click(object sender, EventArgs e)
{
    // we are in Default.aspx here!
    Response.Redirect("Default.aspx");
}

Это не всегда работает и действительно имеет недостатки.Более того, это не слишком сложно.Работа с Routing Framework может сделать ваши URL более плавными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...