मेरे पास एक डैशबोर्ड है जो रिक्त/डिफ़ॉल्ट स्थिति में शुरू होता है। मैं उपयोगकर्ता को सहेजे गए राज्य को डैशबोर्ड में लोड करने की क्षमता दे रहा हूं। जब वे 'लागू करें' बटन पर क्लिक करें मैं निम्नलिखित कोड चलाएँ:पोस्टबैक के बाद रीफ्रेश पर फॉर्म पुनर्वितरण की पुष्टि के लिए संकेत दिया गया। मैं गलत तरीके से क्या कर रहा हूँ?
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" गलत पर सेट है। मैंने ऑटोपोस्टबैक को गलत पर सेट किया है क्योंकि मैं क्लिक ईवेंट चलाने से पहले सत्यापन करना चाहता था। तो, अब, मैं क्लाइंट-साइड सत्यापन करता हूं और फिर बटन को चलाने के लिए क्लिक करता हूं।
रैडबटन 1 रैपिंग कोई अपडेट पैनल नहीं है। इस प्रकार, 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);
किसी भी समय एक पृष्ठ पोस्ट फॉर्म द्वारा सबमिट किया जाता है, ब्राउज़र बटन (F5 या जो भी) के साथ पृष्ठ को रीफ्रेश करना आपको संकेत देगा। यह सामान्य व्यवहार है। आपको इसे छेड़छाड़ करना है क्योंकि मूल कारण सामान्य ब्राउज़र व्यवहार है जो कि प्रपत्रों को आकस्मिक पुन: जमा करने से रोकने के लिए है जो वास्तव में भुगतान जमा करने जैसे कुछ करते हैं। – Nikki9696
मुझे लगता है कि अगर यह डेटा चुपचाप खराब हो जाता है तो चीजें घटित होती हैं। मुझे होने के बाद पोस्ट डेटा को साफ़ करने का एक तरीका ढूंढना होगा। मैं वर्तमान में पीआरजी के बारे में पढ़ रहा हूँ। –