대/소문자/기본 상태로 시작하는 대시 보드가 있습니다. 사용자에게 저장된 상태를 대시 보드에로드 할 수있는 권한을 부여합니다. '적용'버튼을 클릭하면 다음 코드가 실행됩니다.다시 게시 후 양식 새로 고침시 확인 양식 다시 요청 메시지가 표시됩니다. 내가 뭘 잘못하고 있니?
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로 설정되어 있습니다. 나는 Click 이벤트를 실행하기 전에 유효성 검사를 수행하기 때문에 AutoPostBack을 false로 설정했습니다. 이제 클라이언트 측 유효성 검사를 수행 한 다음 버튼 클릭이 실행되도록 허용합니다.
RadButton1을 래핑하는 업데이트 패널이 없습니다. 따라서 RadButton1_Click 이후 전체 페이지가 게시됩니다. 이로 인해 페이지의 상태가 구문 분석 된 상태를 '로드'합니다.
페이지를 새로 고침하면 Google 크롬에 "양식 다시 제출을 확인하십시오."라고 표시됩니다. 나는이 문제를 줄이는 방법에 대해 읽었지만 근본적인 원인을 추적하려고한다.
솔루션 :
//This changes the response to a GET instead of a POST. Prevents the 'Form Resubmission' dialog.
Page.Response.Redirect(Page.Request.Url.ToString(), true);
언제든지 양식 POST로 페이지를 제출할 때마다 브라우저 버튼 (F5 또는 무엇이든)으로 페이지를 새로 고침하면 프롬프트가 표시됩니다. 그것은 정상적인 행동입니다. 근본적인 원인은 지불을 제출하는 등의 실수로 양식을 실수로 다시 제출하는 것을 방지하기위한 브라우저의 일반적인 동작이기 때문에이를 축소해야합니다. – Nikki9696
이 데이터가 자동으로 다시 제출되면 나쁜 일이 일어날 것이라고 생각합니다. POST 데이터가 삭제 된 후이를 지우는 방법을 찾아야합니다. 나는 현재 PRG에 대해 읽고있다. –