2009-05-06 16 views
7

मुझे यह जानने में दिलचस्पी है कि विशेष रूप से पेज.इसपोस्टबैक का क्या अर्थ है। मैं मानक एएसपी.नेट पेज में दिन-प्रतिदिन उपयोग के बारे में पूरी तरह से अवगत हूं, यह इंगित करता है कि उपयोगकर्ता सर्वर की ओर वापस डेटा सबमिट कर रहा है। Page:IsPostBack PropertyIsPostBack का वास्तव में क्या अर्थ है?

देखें लेकिन इस HTML

<html> 
    <body> 
     <form method="post" action="default.aspx"> 
     <input type="submit" value="submit" /> 
     </form> 
    </body> 
</html> 

जब सबमिट बटन पर क्लिक दिया, पृष्ठों Page_Load विधि शुरू हो जाती है, लेकिन Page.IsPostBack झूठी लौटा रहा है। मैं runat=server जोड़ना नहीं चाहता हूं।

मैं पहले लोड किए गए पृष्ठों के बीच अंतर कैसे बता सकता हूं, और ग्राहक द्वारा सबमिट किए गए अनुरोध को सबमिट करने का अनुरोध क्या है?

अद्यतन
मैं <input type="text" value="aa" name="ctrl" id="ctrl" /> में जोड़ दिया है तो Request.Form एक तत्व है, और Request.HTTPMethod पोस्ट है, लेकिन अभी भी IsPostBack गलत है?

उत्तर

6

ऐसा करने का एक तरीका एएसपी.NET पृष्ठ वर्ग का विस्तार करना है, IsPostBack प्रॉपर्टी को "ओवरराइड" करना है और अपने सभी पृष्ठों को विस्तारित पृष्ठ से प्राप्त करना है।

public class MyPage : Page 
{ 
    public new bool IsPostBack 
    { 
     get 
     { 
      return 
      Request.Form.Keys.Count > 0 && 
      Request.RequestType.Equals("POST", StringComparison.OrdinalIgnoreCase); 
     } 
    } 
} 
+0

+1 भी शामिल कर सकता हूं यह शायद मेरी समस्या का समाधान है। धन्यवाद –

+3

जो वास्तव में "IsPost" नाम की संपत्ति के लिए अधिक उपयुक्त होगा। – Kris

+0

"Request.Form.Keys.Count" शामिल करने के लिए संपादित किया गया है, तो मैं Request.Form ["ctrl"] का उपयोग कर टेक्स्टबॉक्स से मूल्य देख सकता हूं। –

1

उदाहरण में कि आप अपने प्रश्न में शामिल हैं, इसमें कोई व्यूस्टेट शामिल नहीं है; इस अनुरोध को पृष्ठ के पिछले अनुरोध से जोड़ने के लिए सर्वर का कोई तरीका नहीं है और उन्हें एक इकाई के रूप में व्यवहार करें। बटन पर क्लिक करने के परिणामस्वरूप सर्वर में आने वाले किसी अन्य यादृच्छिक अनुरोध की तरह दिखेगा।

0

आप यह देखने के लिए हेडर देख सकते हैं कि आपका इनपुट नियंत्रण एक मान लौटा रहा है (Request.Forms का उपयोग tvanfosson बिंदुओं के रूप में)। हालांकि, वास्तव में बड़ा सवाल यह है कि आप रनैट = सर्वर जोड़ना चाहते हैं। एएसपी.नेट (एमवीसी को छोड़कर) द्वारा लागू संपूर्ण पृष्ठ प्रसंस्करण भवन सर्वर के माध्यम से कॉल आउटबैक के लिए उपयुक्त क्लाइंट-साइड कोड स्थापित करने के लिए सर्वर आउटपुट को प्रोसेस करने पर निर्भर करता है।

12

अनुरोध देखने के लिए अनुरोध करें। यह खाली नहीं है। केवल एक पोस्ट में Request.Form संग्रह में डेटा होगा। बेशक, यदि कोई फॉर्म डेटा नहीं है तो अनुरोध जीईटी से अलग नहीं है।

आपके शीर्षक में प्रश्न के अनुसार, अनुरोध सर्वर पर साइड नियंत्रण से एक पोस्ट है जब IsPostBack सत्य पर सेट है। केवल अपना फॉर्म क्लाइंट-साइड बनाना, इसे पराजित करता है।

+0

+1 मुझसे +1। मैं उस अनुरोध को याद रखने के पीछे थोड़ा सा दौड़ रहा था। अनुरोध था कि आप कच्चे इनपुट फॉर्म डेटा खींचेंगे। यह सही जवाब है। मैं अभी भी उत्सुक हूं, हालांकि, इयान पेज हैंडलिंग क्यों स्थापित नहीं कर रहा है। –

+0

@ मार्क - मैं "कट्टर" होने और सबकुछ खुद कर रहा हूं।पूछें क्यों :-) –

+0

+1 @tvanfosson - मैंने दूसरे प्रश्न को उत्तर के रूप में चिह्नित किया है, क्योंकि मैं "Request.Form.Keys.Count> 0" –

1

आम तौर पर एक आप का एक संयोजन के रूप में एक पोस्टबैक देख सकते हैं:

  1. HTTP अनुरोध विधि "पोस्ट" बराबर
  2. HTTP हेडर HTTP_REFERER वर्तमान URL

100% सरल नहीं है यही कारण है कि बराबर होती है हालांकि, यह किसी भी प्रकार की किसी भी स्थिति को ध्यान में रखता नहीं है (जिसे आप शायद यहां तक ​​कि अगर आप इसे नहीं जानते हैं) लेकिन यह पोस्ट, वापस वर्तमान पृष्ठ पर ।

संबंधित मुद्दे