दिलचस्प पोस्ट
Ggplot2 में स्टैक्ड बार चार्ट पर डेटा मान दिखा रहा है मैं एफएफ 34.x में एफएफ 33.x फ्लेक्सबॉक्स व्यवहार कैसे प्राप्त करूं? क्या asp.net के बाहर रेज़र व्यू इंजन का उपयोग करना संभव है स्विफ्ट में एक HTTP अनुरोध कैसे करें? निर्भरता वाकर: लापता डीएलएलएस कश्मीर के निकटतम पड़ोसी और इसके कार्यान्वयन ढूँढना सर्वश्रेष्ठ जावास्क्रिप्ट कम्प्रेसर कोशिश-के-संसाधनों के ब्लॉक में कई संक्रमित संसाधनों के प्रबंधन के लिए सही मुहावरे हैं? Enum विशेषता से enum प्राप्त करें एंड्रॉइड.एफ़। फ्रेगमेंट और एंड्रॉइड। Support.v4.app.Fragment के बीच का अंतर स्थानीय फ़ाइल सिस्टम से jQuery अजाक्स अनुरोध (Windows फ़ाइल: ///) "हमेशा शीर्ष पर" विंडोज के साथ जावा सामग्री में कैरेट स्थिति प्राप्त करेंडिटेबल डिवेल मार्जिन HTML पेज प्रिंट करते समय दशमलव के बजाए विभाजन का परिणाम शून्य क्यों होता है?

पोस्ट-रीडायरेक्ट-एएसपी। नेट से प्राप्त करें

मैं asp.net के साथ पोस्ट-पुनर्निर्देशन-प्राप्त पैटर्न कैसे लागू करूं?

एक बटन क्लिक कुछ प्रसंस्करण करता है:

<asp:Button id="bbLaunch" OnCommand="bbLaunch_Click" /> 

उपयोगकर्ता बटन पर क्लिक करता है, अंतरिक्ष यान शुरू किया जाता है, वेब पृष्ठ पुनः प्रदर्शित करता है यदि उपयोगकर्ता F5 दबाता है, तो उन्हें चेतावनी मिलती है:

यहां छवि विवरण दर्ज करें

समस्या का समाधान पोस्ट-रीडायरेक्ट-गेट पैटर्न है।

एएसपी.नेट में पीआरजी को कैसे कार्यान्वित किया जा सकता है?


इस समस्या की चारों ओर प्रश्न केंद्र:

  • कैसे <asp:Button> एक ऐसा स्थान पर POST कर सकता है जो इसका मूल रूप नहीं है?
  • व्यूस्टेट का क्या हो जाता है जब आप उस प्रपत्र पर पोस्ट करते हैं जो दृश्य स्थिति नहीं पढ़ता है?
  • जब आप "वास्तविक" एएसपीएक्स वेब प्रपत्र पर पुनर्निर्देशित करते हैं तो व्यूस्टेट का क्या हो सकता है?
  • ViewState मूल रूप से असुरक्षित है ASP.net पोस्ट-पुनर्निर्देश-प्राप्त करें?
  • पोस्ट-पुनर्निर्देशन के साथ मूल रूप से असंगत ASP.net है – क्या ?
  • कैसे (यानी क्या कोड) आप "असली" aspx वेब प्रपत्र को पुनर्निर्देशित करते हैं?
  • कैसे (यानी क्या यूआरएल) आप "वास्तविक" aspx वेब प्रपत्र को पुनर्निर्देशित करते हैं? एक रिश्ते सवाल Response.Redirect(Request.RawUrl);
  • जब (यानी क्या ईवेंट हैंडलर में) आप "वास्तविक" aspx वेब प्रपत्र पर पुनर्निर्देशित करते हैं?
  • संबंधित प्रश्न आप कैसे फॉर्म डेटा पोस्ट करते हैं इसका अर्थ है कि HTML प्रपत्रों का उपयोग नहीं किया जा सकता है – और सभी फ़ॉर्म डेटा को क्वेरी स्ट्रिंग में जोड़ा जाना चाहिए। क्या ये सच है? यदि हां, तो क्यों? यदि नहीं, तो क्यों नहीं? क्या कोई क्वेरी क्वेरी स्ट्रिंग में एक ब्राउज़र डेटा डाल सकता है?
  • संबंधित प्रश्न का उल्लेख Server.TransferServer.Transfer Server.Transfer का प्रयोग Server.Transfer पूरी तरह से गलत है, और कोई भी तरीका पोस्ट-पुनर्निर्देश-प्राप्त समस्या का समाधान नहीं करता है (क्योंकि कोई रीडायरेक्ट नहीं है)। सही बात?
  • पीआरजी को समर्थन देने के लिए aspx.cs या aspx.cs फ़ाइल में क्या कोड परिवर्तन होता है? संभवतः, कम से कम, कोड को MyPage.aspx अलावा कहीं भी post करने के लिए परिवर्तित किया जाना चाहिए।

दूसरे शब्दों में: आप पोस्ट-रीडायरेक्ट- एएसपी.नेट में कैसे प्राप्त करें?

नोट : एएसपी.नेट (एएसपी.एन.एम.आई.आई. नहीं)

यह भी देखें

  • Asp.net वेबफॉर्म में पोस्ट / रीडायरेक्ट / गेट पैटर्न कैसे लागू करूं?
  • मैं asp.net के साथ "पोस्ट / रीडायरेक्ट / गेट" उर्फ ​​"रीडेड करने के बाद पोस्ट" का उपयोग कैसे करूं?

वेब के समाधान से एकत्रित समाधान "पोस्ट-रीडायरेक्ट-एएसपी। नेट से प्राप्त करें"

आम तौर पर आप ऐसा एएसपीएक्स वेब फॉर्म बनाकर ऐसा कर सकते हैं जो क्विकस्ट्रिंग को लोड करने / प्रक्रिया को रिकॉर्ड करने के लिए संकेत करता है।

मान लीजिए आपके पास एक ऐसा पृष्ठ है जो आपको कुछ ग्राहक सूचना अपडेट करते हैं:

 http://www.mysite.com/customer.aspx 

आप querystring में आईडी का उपयोग करते हुए फ़ॉर्म लोड करेंगे:

 http://www.mysite.com/customer.aspx?CustomerId=42 

कोडबिहाइन में आपको ऐसा कुछ होगा:

 protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { int customerId = 0; if (!string.IsNullOrEmpty(Request.QueryString["CustomerId"])) { int.TryParse(Request.QueryString["CustomerId"], out customerId ); } if (customerId == 0) { //handle case when no valid customer id was passed in the qs here } else { //load customer details, bind controls etc //make sure to handle the case when no customer was found using the id in the qs } } } 

तब आपके पृष्ठ में कहीं आपके पास एक बटन होता है जो परिवर्तनों को बचाता है। उस बटन के पीछे कोड में एक OnClick हैंडलर होगा:

 protected void SaveClicked(object sender, EventArgs e) { //save changes to database here //Redirect if all went well Response.Redirect("http://www.mysite.com/customer.aspx?CustomerId=" + idOfSavedCustomer.ToString()); } 

यह मूल रूप से यह होना चाहिए। रीडायरेक्ट ब्राउज़र को पुन: निर्देश (…) में यूआरएल के लिए एक नया GET अनुरोध जारी करने का कारण होगा। यह पृष्ठ लोड करेगा, if (!IsPostBack) आपके द्वारा पिछली पोस्ट में सहेजी गई नई मूल्यों के साथ पृष्ठ को चलाएगा और प्रारंभ करेगा।

इस पूरी प्रक्रिया के लिए, ब्राउज़र और सर्वर के बीच यातायात इस तरह कुछ दिखाई देगा:

 Browser: GET http://www.mysite.com/customer.aspx?CustomerId=42 Server: 200 (send back some html) Browser: POST http://www.mysite.com/customer.aspx?CustomerId=42 (post data sent in request) Server: 302 (point to http://www.mysite.com/customer.aspx?CustomerId=42) Browser: GET http://www.mysite.com/customer.aspx?CustomerId=42 Server: 200 (send html) 

मध्य चरण में, सर्वर मूल रूप से कह रहा है:

"उस पोस्ट के अनुरोध पर आपने मुझे भेजा है, मैं उसके साथ कर रहा हूं। अब कृपया इस दूसरे पेज पर मिलें …"

वास्तव में यूआरएल वास्तव में एक ही पृष्ठ पर संदर्भित करता है महत्वपूर्ण नहीं है।


सवालों की अपनी बुलेट बिंदु सूची के जवाब में कुछ सोच:

  • एक ऐसा स्थान कैसे प्राप्त कर सकता है जो इसका मूल रूप नहीं है?

आप फ़ॉर्म पर action एट्रिब्यूट सेट करके यह कर सकते हैं, या आप बटन पर PostBackUrl सेट कर सकते हैं।

  • व्यूस्टेट का क्या हो जाता है जब आप उस प्रपत्र पर पोस्ट करते हैं जो दृश्य स्थिति नहीं पढ़ता है?

निर्भर करता है। यदि आप फ़ॉर्म को किसी भिन्न पृष्ठ पर पोस्ट करते हैं, तो आप "नया पृष्ठ" जहां पोस्ट से आया था, को बताने के लिए <% @ PreviousPageType … /> निर्देश का उपयोग कर सकते हैं। यह केवल नए पेज पर पोस्ट किए गए डेटा के साथ काम करने के लिए आसान होगा। विवरण के लिए इस लिंक को देखें

  • जब आप "वास्तविक" एएसपीएक्स वेब प्रपत्र पर पुनर्निर्देशित करते हैं तो व्यूस्टेट का क्या हो सकता है?

देखें पोस्ट पोस्ट अनुरोध में भेजा जाता है। रीडायरेक्ट करते समय, ब्राउज़र एक नया पृष्ठ लोड करेगा और यह स्वयं की वैश्येट बना देगा।

  • ViewState मूल रूप से असुरक्षित है ASP.net पोस्ट-पुनर्निर्देश-प्राप्त करें?

निर्भर करता है कि आप इसे कैसे देखते हैं। रीडायरेक्ट करने के बाद नए पेज के पास पेज के व्यूस्टेट तक पहुंच नहीं होगी।

  • पोस्ट-पुनर्निर्देशन के साथ मूल रूप से असंगत ASP.net है – क्या?

नहीं, ऊपर दिए गए उदाहरण देखें।

  • कैसे (यानी क्या कोड) आप "असली" aspx वेब प्रपत्र को पुनर्निर्देशित करते हैं?

Response.Redirect (यूआरएल)। यह ब्राउज़र को एक प्रतिक्रिया भेजता है, इसे एक नया अनुरोध प्राप्त करने के लिए कहता है।

  • जब (यानी क्या ईवेंट हैंडलर में) आप "वास्तविक" aspx वेब प्रपत्र पर पुनर्निर्देशित करते हैं?

जब आप पोस्ट अनुरोध को संसाधित करने के लिए आवश्यक सभी कार्य करते हैं।

  • संबंधित प्रश्न आप कैसे फॉर्म डेटा पोस्ट करते हैं इसका अर्थ है कि HTML प्रपत्रों का उपयोग नहीं किया जा सकता है – और सभी फ़ॉर्म डेटा को क्वेरी स्ट्रिंग में जोड़ा जाना चाहिए। क्या ये सच है? यदि हां, तो क्यों? यदि नहीं, तो क्यों नहीं? क्या कोई क्वेरी क्वेरी स्ट्रिंग में एक ब्राउज़र डेटा डाल सकता है?

पोस्ट अनुरोध को पुनर्निर्देशित करना अच्छी तरह से समर्थित नहीं है और संभवतः इसे टाला जाना चाहिए। यह (कुछ ब्राउज़र के साथ) http प्रतिसाद 307 का उपयोग करके किया जा सकता है। जब ऐसा करते हैं, सर्वर प्रभावी रूप से ब्राउज़र को बताता है कि " मैं आपको पोस्ट अनुरोध संसाधित नहीं करेगा, कृपया इसे इसके अन्य पेज पर पोस्ट करें "।

  • संबंधित प्रश्न का उल्लेख सर्वर। ट्रांससेफर सर्वर का प्रयोग करना.ट्रांसफर पूरी तरह से गलत है, और कोई भी तरीका पोस्ट-पुनर्निर्देश-प्राप्त समस्या का समाधान नहीं करता है (क्योंकि कोई रीडायरेक्ट नहीं है)। सही बात?

सर्वर। ट्रांसफर (…) कुछ ऐसा है जो सर्वर साइड पर हो रहा है ब्राउज़र इसके बारे में जानकारी नहीं है। असल में एक पेज सर्वर का इस्तेमाल कर सकता है.ट्रांसफर कुछ अन्य पेज को कुछ प्रोसेसिंग करने के लिए इस्तेमाल किया जा सकता है, और उस पृष्ठ को ब्राउज़र पर प्रतिक्रिया भेजने के लिए उत्तरदायी होगा। लेकिन ब्राउज़र सोचता है कि यह मूल पृष्ठ का जवाब था।

  • पीआरजी को समर्थन देने के लिए एएसपीएक्स या एएसपीएक्स सीएस फ़ाइल में क्या कोड परिवर्तन होता है? संभवतः, कम से कम, कोड को MyPage.aspx के अलावा कहीं भी पोस्ट करने के लिए परिवर्तित किया जाना चाहिए।

नहीं, एक नियमित पोस्ट वापस इस्तेमाल किया जा सकता है। इस चाल में पृष्ठ पर एक (या कुछ) विशिष्ट ईवेंट हैंडलर (एस) होने चाहिए, जो रैपसेंस करता है। पोस्ट किए गए डेटा को प्रोसेस करने के बाद रीडायरेक्ट।

क्यू) किसी ऐसे स्थान पर पोस्ट कैसे कर सकता है जो इसका मूल रूप नहीं है?

ए) पीआरजी के साथ, आप एक अलग पृष्ठ पर पोस्ट नहीं करते हैं, आप उसी पृष्ठ पर वापस पोस्ट करते हैं (आप जिस लिंक से जुड़े हुए विकिपीडिया पृष्ठ पर आरेख देखें)। लेकिन उस पृष्ठ से प्रतिक्रिया 30x प्रतिक्रिया होनी चाहिए (आमतौर पर 302 ।)

क्यू) क्या व्यूस्टेट का क्या होता है जब आप किसी ऐसे फॉर्म पर पोस्ट करते हैं जो दृश्य स्थिति को नहीं पढ़ता है?

ए) जब आप पोस्ट करते हैं, तो दृश्य राज्य होता है, लेकिन वहां देखें राज्य उस नए पेज के लिए नहीं होगा जो आप जीईटी पर कर रहे हैं।

क्यू) जब आप "वास्तविक" aspx वेब प्रपत्र पर पुनर्निर्देशित करते हैं तो व्यूस्टेट का क्या हो सकता है?

ए) प्रति ऊपर, कोई और दृश्य स्थिति पृष्ठ पर रीडायरेक्ट नहीं कर रहा है।

क्यू) ViewState मूल रूप से ASP.net के साथ असंगत है?

ए) व्यूस्टेट एएसपी.नेट के साथ असंगत नहीं है। यह उस पेज को प्रस्तुत करने के लिए पी / आर / जी के लिए (अधिकतर) बेकार है, जिस पर आपको पुनः निर्देशित किया जाता है

क्यू) पोस्ट-पुनर्निर्देशन के साथ मूल रूप से असंगत ASP.net है – क्या?

ए) नहीं – परन्तु आप एक पृष्ठ का उपयोग करने और उपरोक्त के अनुसार अपने सभी राज्य को व्यूअर में रखने पर अधिक निर्भर नहीं कर सकते। उसने कहा, एएसपी.एमवीसी नक्शे पी / आर / जी के लिए बेहतर है

क्यू) कैसे (यानी क्या कोड) आप "असली" aspx वेब प्रपत्र को पुनर्निर्देशित करते हैं?

ए) Response.Redirect ("new_page_you_are_redirecting_to.aspx") में bbLaunch_Click विधि old_page_you_are_posting_from.aspx

क्यू) कैसे (यानी यूआरएल) क्या आप "वास्तविक" aspx वेब प्रपत्र को पुनर्निर्देशित करते हैं? एक रिश्ते सवाल रिस्पांस। रीडायरेक्ट (अनुरोध। RUUrl);

ए) ऊपर देखें

क्यू) जब (क्या घटना हैंडलर में) आप "असली" aspx वेब प्रपत्र को पुनर्निर्देशित करते हैं?

ए) बटन प्रेस पर संसाधित करने के बाद, डेटा को डीबी (या सत्र, आदि) में सहेजा गया और इससे पहले कि आप रिस्पांस स्ट्रीम पर कुछ और लिखा हो।

क्यू) संबंधित प्रश्न आप कैसे फॉर्म डेटा पोस्ट करते हैं इसका अर्थ है कि HTML प्रपत्रों का उपयोग नहीं किया जा सकता है – और सभी फ़ॉर्म डेटा को क्वेरी स्ट्रिंग में जोड़ा जाना चाहिए। क्या ये सच है?

ए) नहीं – एएसपी.नेट वेबफॉर्म में बटन प्रेस पेज पर वापस पोस्ट करेंगे।

क्यू) यदि हां, तो क्यों? यदि नहीं, तो क्यों नहीं?

ए) यह इस से सरल है, क्यों नहीं दो पृष्ठ इमेजिंग: first_page.asp और दूसरा_पृष्ठ.aspx। First_page.aspx में उस बटन पर (अन्य एएसपी.नेट वेब कंट्रोल, जैसे पाठ बक्से, इत्यादि उपयोगकर्ता द्वारा भर दिया गया है।) जब वे बटन दबाते हैं, तो प्रथम_पृष्ठ.aspx को एक पोस्ट बना दिया जाता है। डेटा को संसाधित करने के बाद (जो कि देखने के भीतर होने की संभावना है, हालांकि इसे दूर समतल किया गया है), आप उपयोगकर्ता को second_page.aspx पर प्रतिक्रिया दें। Second_page.aspx आप क्या चाहते हैं प्रदर्शित कर सकते हैं। यदि आप चाहते हैं (या ज़रूरत) UI को प्रदर्शित करने के लिए जो first_page.aspx पर था, नियंत्रण और क्या वे इनपुट के साथ, आप उस सत्र में, एक कुकी, क्वेरी स्ट्रिंग पैरामीटर के रूप में यूआरएल को सेट करना चाहते हैं दूसरी_पृष्ठ.एस्पक्स पर ये नियंत्रण। (लेकिन आपको second_page.aspx पर कुछ भी प्रदर्शित करने की ज़रूरत नहीं है जो first_page.aspx के समान है – इसलिए यहां सामान्य नियम नहीं है।)

क्यू) क्या कोई ब्राउज़र एक क्वेरी स्ट्रिंग में फ़ॉर्म डेटा डाल सकता है?

ए) हां, यदि आप पद की बजाय पद प्राप्त करने के लिए विधि सेट करते हैं। आप ऐसा करने के लिए वेबफॉर्म ओवरराइड नहीं कर सकते, और यह पीआरजी के लिए आवश्यक नहीं है

क्यू) एक संबंधित प्रश्न का उल्लेख सर्वर। ट्रांससेफर सर्वर का प्रयोग करना.ट्रांसफर पूरी तरह से गलत है, और कोई भी तरीका पोस्ट-पुनर्निर्देश-प्राप्त समस्या का समाधान नहीं करता है (क्योंकि कोई रीडायरेक्ट नहीं है)। सही बात?

ए) मूल रूप से

क्यू) पीआरजी का समर्थन करने के लिए एएसपीएक्स या एएसपीएक्स सीएस फाइल में क्या कोड बदलना है? संभवतः, कम से कम, कोड को MyPage.aspx के अलावा कहीं भी पोस्ट करने के लिए परिवर्तित किया जाना चाहिए।

ए) कोड को अब भी पोस्ट करना चाहिए (जैसा कि ऊपर उल्लेखित है)। लेकिन फिर Mypage.aspx को बटन हैंडलर में एक नया पृष्ठ पर पुनः निर्देशित करना चाहिए।

पोस्ट रीडायरेक्ट प्राप्त करने के ठीक चरण ये हैं:

http://img.hiwab.com/post-redirect-get/PostRedirectGet.jpg

आपके पास वह फॉर्म है जिसे आप डेटा के साथ पूरा करते हैं, और अपने वैध जमा (POST) के बाद आप उन्हें अपने डेटाबेस में डालें, और उन्हें पुष्टिकरण आईडी दें, फिर उपयोगकर्ता को इस पुष्टिकरण आईडी के साथ पृष्ठ पर यूआरएल पैरामीटर के रूप में रीडायरेक्ट करें के रूप में (GET) रीडायरेक्ट के बाद प्रत्येक F5- रीफ़्रेश केवल डेटा पढ़ता है और उन्हें फिर से सम्मिलित नहीं करता है।

सम्मिलित करने के लिए कोड उस कूट से भिन्न होता है जो पुष्टिकरण दिखाता है, आप उन्हें अलग-अलग पृष्ठ भी बना सकते हैं – आप एक ही पेज को केवल पाठ बक्से पढ़ सकते हैं।

रीडायरेक्ट सरल है Responce.Redirect रीडायरेक्ट फ़ंक्शन

पोस्ट और रीडायरेक्ट के निर्माण के बाद ही आपको लगता है कि आपको पिछली कार्रवाई से कनेक्ट करना पुष्टि कोड है (व्यूस्टेट नहीं है)

इस पद्धति का माइनस यह है कि वास्तव में ताज़ा पहचान नहीं है, केवल एक अतिरिक्त कदम उठाएगा जो फिर से एक ही डेटा को फिर से सम्मिलित न करें – लेकिन प्राप्त डेटा के लिए अतिरिक्त कोड की आवश्यकता होती है।

विकल्प रिफ्रेश को पहचानना है और रीडायरेक्ट नहीं करना है। पोस्ट पर रिफ्रेश को पहचानकर आप एक ही संदेश को उपयोगकर्ता को एक ही संदेश में डालने से बच सकते हैं। इसके लिए इंटरनेट पर कुछ उदाहरण हैं, और मैंने सफलता के साथ एक को लागू किया है।

एक उदाहरण: http://www.codeproject.com/Tips/319955/How-to-prevent-Re-Post-action-caused-by-pressing-b

पोस्ट-रीडायरेक्ट-गेट पैटर्न वेब प्रपत्र में इस्तेमाल किया जा सकता है। मैंने दिखाया है कि कैसे यह MVC NerdDinner एप्लिकेशन को वेब फ़ॉर्म, http://navigationnerddinner.codeplex.com/ पर परिवर्तित करके किया जा सकता है। मैंने नेविगेशन विवरण को वही रखा है, इसलिए पीआरजी पैटर्न के बहुत सारे उदाहरण हैं

हालांकि, एफ 5 / रीफ्रेश समस्या से बचने का एक और तरीका है। यदि आप अपने पेज को एक UpdatePanel (ASP.NET Ajax का हिस्सा) में लपेटते हैं, तो सभी पोस्ट बैक आंशिक पृष्ठ अनुरोधों में परिवर्तित हो जाएंगे। इसका मतलब है कि जब F5 दबाया जाता है यह केवल मूल GET अनुरोध को रीफ्रेश करेगा (चूंकि कोई भी बाद के पोस्ट नहीं हैं), और इसलिए आपको चेतावनी नहीं मिलेगी। (नोट, अगर जावास्क्रिप्ट अक्षम है तो चेतावनी अभी भी दिखाई देगी)।

आप किसी अन्य स्थान पर जाने के लिए Response.Redirect विधि को आमंत्रित कर सकते हैं।

इसमें कुछ चीजें हैं जो इस पर जाते हैं

  1. मुख्य पृष्ठ पर प्रपत्र की कार्रवाई विशेषता सेट करें (चलो इसे LaunchForm.aspx कहते हैं) "प्रॉक्सी" पृष्ठ के URL के बराबर ( ProxyLaunchForm.aspx )।

    <form id = "form1" runat = "server" action = "प्रॉक्सी लँगफॉर्म.एस्पक्स" विधि = "पोस्ट">

  2. (वैकल्पिक) नाम के साथ छिपे हुए इनपुट को जोड़ने के लिए प्रपत्र में यूआरएल दर्ज करें और यूआरएल का मूल्य जो ProxyLaunchForm.aspx को बताता है, जहां एक बार यह प्रक्षेपण (पीआरजी का आर भाग) समाप्त हो जाने के बाद पुनर्निर्देशित होता है।

  3. अब ProxyLaunchForm.aspx पर, कार्यान्वयन पेज_लोड ईवेंट हैंडलर के अंदर होना चाहिए, क्योंकि उस पोस्ट डेटा को फ़ॉर्म तक पहुंच है। यहां लॉन्च करें।

  4. इसके बाद ( पेज_लोड में भी), रीडायरेक्ट करें (या तो # 2 से रीडायरेक्टर यूआरएल का प्रयोग कर या बस संदर्भ वाले यूआरएल का इस्तेमाल करके):

    रिस्पांस। रीडायरेक्ट (अनुरोध। पैराशॉम्स ["रीडायर यूआरएल"]? अनुरोध। यूआरएलरेफेर। एएसएसओलयूटीयूआरआई);

    अभी भी दृश्य राज्य की बात है। मुझे लगता है कि इस से निपटने का सबसे आसान तरीका यह है कि दृश्य राज्य कैसे जारी रहे। आम तौर पर, यह पृष्ठ पर छिपे हुए इनपुट तत्व में सहेजा जाता है और पोस्टबैक पर पुनर्प्राप्त होता है (अर्थात इसका मतलब है कि HTTP के स्टेटलेस प्रकृति के कारण रीडायरेक्ट के बाद उसे खो दिया जाएगा)। हालांकि, आप ASP.net द्वारा उपयोग किए जाने वाले तरीकों को ओवरराइड कर सकते हैं, और इसके बजाय सत्र का उपयोग कर सकते हैं (ऐसा तरीका अभी भी पीआरजी प्रॉक्सी एक्शन के बाद भी मौजूद होगा)। तो, आखिरकार …

  5. LaunchForm.aspx.cs में , बेस क्लास के रूप में एक उपवर्ग पृष्ठ के रूप में उपयोग करें, जो कि एक छुपा फार्म फ़ील्ड के बजाय, सत्र से उन्हें स्टोर / पुनर्प्राप्त करने के लिए SavePageStateToPersistenceMedium और LoadPageStateFromPersistenceMedium विधियों को ओवरराइड करता है। नीचे देखें (और यह कैसे काम करता है इस बारे में अधिक जानकारी है। )

*

 public class PersistViewStateToSession : Page { protected override void SavePageStateToPersistenceMedium(object viewState) { // serialize the view state into a base-64 encoded string LosFormatter los = new LosFormatter(); StringWriter writer = new StringWriter(); los.Serialize(writer, viewState); // save the string to session Session["LaunchViewState"] = writer.ToString(); } protected override object LoadPageStateFromPersistenceMedium() { if (!Session["LaunchViewState"] == null) return null; else { string sessionString = (string)Session["LaunchViewState"]; // deserialize the string LosFormatter los = new LosFormatter(); return los.Deserialize(viewStateString); } } }