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

У меня есть приборная панель, которая начинается в состоянии пустого / по умолчанию. Я даю пользователю возможность загружать сохраненное состояние в приборную панель. Когда они нажимают кнопку «Применить», я выполняю следующий код:

function CloseAndSave() {
    var radUpload = $find(radUpload1ID);
    var inputs = radUpload.getFileInputs();

    if (inputs[0].value.length == 0) {
        alert('Please select a dashboard to upload.');
        return;
    }

    if( !radUpload.isExtensionValid(inputs[0].value) ) {
        alert('Please select an XML file.');
        radUpload.clearFileInputAt(0);
        return;
    }

    oWindow = null;
    __doPostBack(radButton1ID);
}

protected void RadButton1_Click(object sender, EventArgs e)
{
    if (RadUpload1.UploadedFiles.Count > 0)
    {
        UploadedFile dashboardXMLFile = RadUpload1.UploadedFiles[0];

        SerializableDictionary<string, string> dataToLoad = new SerializableDictionary<string, string>();
        XmlSerializer xmlSerializer = new XmlSerializer(dataToLoad.GetType());

        using (StreamReader reader = new StreamReader(dashboardXMLFile.InputStream))
        {
            dataToLoad = (SerializableDictionary<string, string>)xmlSerializer.Deserialize(reader);
        }

        foreach (var entry in dataToLoad)
        {
            string sessionKey = entry.Key;

            if (!string.IsNullOrEmpty(entry.Value))
            {
                Type type = StateManager.GetTypeFromStateName(sessionKey);

                byte[] data = Convert.FromBase64String(entry.Value);
                using (MemoryStream memoryStream = new MemoryStream(data))
                {
                    xmlSerializer = new XmlSerializer(type);
                    SessionRepository.Instance.SetSession(sessionKey, xmlSerializer.Deserialize(memoryStream));
                }
            }
        }
    }
}

RADBUTTON1 имеет свойство «AutoPostback», установленным на false. Я установил AutoPostback в False, потому что я хотел выполнить проверку перед запуском события клики. Итак, теперь я выполняю валидацию на стороне клиента, а затем позвольте кнопку щелкнуть для запуска.

Там нет панели обновления, упаковка панели Radbutton1. Как таковая, все сообщения страницы после Radbutton1_Click. Это приводит к тому, что состояние страницы «загружается» проанализированное состояние.

На данный момент, если я обновляю страницу, Google Chrome говорит: «Пожалуйста, подтвердите форму повторной передачи». Я прочитал о том, как развить это, но я бы предпочел отследить корневую причину.

Решение:

//This changes the response to a GET instead of a POST. Prevents the 'Form Resubmission' dialog.
Page.Response.Redirect(Page.Request.Url.ToString(), true);
5
задан Sean Anderson 9 September 2011 в 15:33
поделиться