2009-05-16 6 views
5

मैं ASP.NET2.0 उपयोग कर रहा हूँ के संवाद को बचाने की पेशकश की। मैंने कुछ इनपुट फ़ील्ड और एक डाउनलोड बटन के साथ एक डाउनलोड फॉर्म बनाया है। जब डाउनलोड बटन क्लिक किया जाता है, मैं एक "डाउनलोड करने के लिए धन्यवाद ..." पृष्ठ पर उपयोगकर्ता रीडायरेक्ट करना चाहते हैं और तुरंत उसे/उसे फ़ाइल को बचाने के लिए प्रदान करते हैं।एक "धन्यवाद" पृष्ठ पर पुनर्निर्देशित किया और डाउनलोड की गई फ़ाइल तुरंत

public partial class ThankYouPage : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     Response.Clear(); 
     Response.AddHeader("Content-Disposition", 
          "attachment; filename=\"downloadedFile.zip\""); 
     Response.ContentType = "application/x-zip-compressed"; 
     Response.BinaryWrite(this.downloadedFileByteArray); 
     Response.Flush(); 
     Response.End(); 
    } 
} 

जाहिर है, इस कोड को किसी भी "धन्यवाद" संदेश प्रदर्शित करने के लिए अनुमति नहीं देता:

मैं savefile संवाद दिखाने के लिए इस निम्नलिखित कोड है। वहाँ एक "AfterRender" घटना या पृष्ठ जहां, मैं इस डाउनलोड कोड के लिए कदम और उपयोगकर्ता के लिए "धन्यवाद" संदेश रेंडर करने के लिए पेज के लिए एक मौका दे सकता है की ऐसी ही कुछ है? आखिरकार, मैं उनके लिए सचमुच आभारी हूं, इसलिए मैं इसे व्यक्त करना चाहता हूं।

उत्तर

6

आप अपने धन्यवाद पृष्ठ से एक डाउनलोड पृष्ठ का संदर्भ एक IFrame

<iframe src="DownloadFile.aspx" style="display:none;" /> 

का उपयोग कर इस मामले में कर सकता है, DownloadFile.aspx अपने उदाहरण से पीछे कोड होगा।

1

अपने धन्यवाद पृष्ठ के सिर में एक मेटा रिफ़्रेश टैग का प्रयोग करें:

<META http-equiv="refresh" content="1;URL=http://site.com/path/to/downloadedFile.zip"> 

वैकल्पिक रूप से, आप एक शरीर ऑनलोड समारोह का उपयोग कर सकते डाउनलोड यूआरएल के साथ वर्तमान स्थान को बदलने के लिए।

<body onLoad="document.location='http://site.com/path/to/downloadedFile.zip'"> 

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

तुम भी एक IFRAME के ​​रूप में फिल ने सुझाव दिया, या यहाँ तक कि एक फ्रेम या एक पूर्ण विकसित पॉप-अप (blockable, मन आप) का उपयोग कर सकते हैं। आपकी माइलेज भिन्न हो सकती है।

1

कोड आपके द्वारा लिखी गई है, वास्तव में 'धन्यवाद' पेज से (यह 2 रीडायरेक्ट बनाने) पर पुनः निर्देशित किया जाना चाहिए। चूंकि आपने सामग्री स्वभाव को अनुलग्नक पर सेट कर दिया है, इसलिए यह पृष्ठ वास्तव में मौजूदा 'धन्यवाद' पृष्ठ को प्रतिस्थापित नहीं करेगा।

1

यदि आप एक "धन्यवाद" पृष्ठ और फ़ाइल ग्राहक दो बार सर्वर कॉल करना होगा की सेवा करना चाहते हैं। तो आप बस संदेश प्रदर्शित करने के लिए thankyou.aspx पेज बना सकते हैं (और शायद फ़ाइल के लिए एक सीधा डाउनलोड लिंक डाल)। गया मेटा टैग के साथ डाउनलोड शुरू कर सकते हैं या सिर्फ जे एस का उपयोग कर (यहां तक ​​कि एमएस उनके डाउनलोड पृष्ठ के लिए एक ही करते हैं)।

फिर फ़ाइल आप सर्वर पर किसी अन्य पृष्ठ रन से बचने के लिए एक सीधा लिंक बनाने सकता था सेवा करने के लिए; अन्यथा आपको फ़ाइलों को छिपाने के लिए एक HttpHandler बनाना चाहिए।

फ़ाइल Response.TrasmitFile

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