2014-01-21 6 views
1

У меня есть форма asp Ajax, на которой пользователь может отправлять данные.Предотвращение повторной отправки страницы после обновления asp.net

Это прекрасно работает, но когда он/она нажимает f5 или обновляет страницу, форму повторно передает. Это общий вопрос и дубликат.

Я читал так много вопросов на разных форумах об этой проблеме и реализовал некоторые, но проблема все еще существует.

Я не могу перенаправить страницу согласно требованиям клиента. Я взял ссылку с this question. Он работал нормально на локальной машине, но когда я развернул страницу, она не отправлялась ни разу. Я дал некоторые из моих усилий тоже, как и follows`

HiddenField hf = new HiddenField(); 

protected void Page_Load(object sender, EventArgs e) 
    { 

     if (!IsPostBack) 
     { 
      createToken(); //to check page is refreshed 
     } 

    } 

public void createToken() 
    { 
     string token = System.Guid.NewGuid().ToString(); 
     Session["token"] = token; 
     hf.Value = token; 
    } 
    private bool TokenIsValid() 
    { 
     string expectedToken = (string)Session["token"]; 
     if (expectedToken == null) 
      return false; 

     string actualToken = hf.Value; 

     return expectedToken == actualToken; 
    } 

protected void btnSubmit_Click(object sender, EventArgs e) 
    { 
     try 
     { 
      if (TokenIsValid()) // check that page is not refreshed by browser. 
      { 
       //insert logic 
     }} 

     catch (Exception ex) 
     { 


     } 

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

+0

Почему именно вы не можете перенаправить? Это самый простой/неудачный подход. –

+0

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

+1

и отображать сообщение, правильно? то, если пользователь снова заново запустит страницу с ответом на строку запроса, будет сообщение (после обновления, а не отправки). исправьте меня, если я ошибаюсь. простите мой английский. спасибо – SMI

ответ

0

Я решил это, передав сообщение об успешном завершении через сеанс, напишите это сообщение на page_load И аннулировал этот сеанс, если страница является новой.

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