2009-05-26 3 views
5

मेरा मित्र ASP.NET में वेबसाइटों को विकसित करने के लिए विजुअल स्टूडियो का उपयोग करता है। वह केवल मास्टर पेज सुविधा का उपयोग करती है, इसके अलावा यह 100% सामान्य एचटीएमएल और सीएसएस है।क्या मैं विजुअल स्टूडियो के माध्यम से एएसपी.नेट वेबसाइट से जेनरेट किए गए एचटीएमएल पेज निर्यात कर सकता हूं?

क्या उनके मास्टर पृष्ठों के आधार पर HTML पृष्ठों पर वेबसाइट निर्यात करने का कोई तरीका है?

यदि नहीं, तो यह या तो प्रत्येक पृष्ठ को मैन्युअल रूप से लोड कर रहा है और HTML को सहेज रहा है, या मैं एक छोटा ऐप लिखता हूं जो इसे करता है।

वैकल्पिक रूप से, क्या किसी को कुछ समान प्राप्त करने के लिए किसी टूल के बारे में पता है?

+0

एक बहुत ही रोचक सवाल का उपयोग करने के लिए txt फ़ाइल! – User

+0

मुझे खुशी है कि आपने शीर्षक संपादित किया है। मैंने सोचा था कि "एचटीएमएल पेजों पर रखा जाना चाहिए" "पोस्ट करने के ठीक बाद :) – joshcomley

+0

मैंने आपके लिए शीर्षक स्पष्ट किया। – Soviut

उत्तर

1

विजुअल स्टूडियो में बॉक्स के बाहर यह क्षमता नहीं है। हालांकि, साइट मानचित्र के माध्यम से चलने वाले टूल को लिखना संभव होना चाहिए, प्रतिक्रिया ऑब्जेक्ट से प्रस्तुत एचटीएमएल को कैप्चर करें, और उसके बाद इसे फ़ाइल में लिखें।

+0

यह वही था जो मुझे "अंतिम उपाय" के रूप में दिमाग में था! – joshcomley

1

मुझे नहीं पता कि एक पूरी साइट को स्थानीय प्रतिलिपि में कैसे निर्यात किया जाए।

हालांकि उपकरण - वेबसाइट डाउनलोडर हैं। मुझे एक के बारे में पता है - टेलीपोर्टप्रो, अन्य होना चाहिए। यदि यह आपके लिए एक विकल्प के रूप में ध्वनि है तो उन्हें देखें।

1

यदि आप प्रयोग करना पसंद करते हैं तो आप मैक्रोमीडिया ड्रीमवेवर को एक शॉट दे सकते हैं। यह क्लाइंट-साइड और सर्वर-साइड पेज विकास के लिए पूरा करता है।

+0

+1 मैं प्रोजेक्ट्स पर सपनेवेवर टेम्पलेटिंग सिस्टम का उपयोग करता था जहां क्लाइंट के पास गतिशील बैकएंड नहीं था। यह अनिवार्य रूप से एएसपी.नेट में मास्टरपेज सिस्टम है लेकिन dreamweaver आपके लिए पेज जेनरेट करता है। – Soviut

1

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

आपके मित्र पुराने जमाने सर्वर साइड भी शामिल है (जो अनिवार्य रूप से है कि क्या एक masterpage आप के लिए क्या कर रही है वैसे भी) का उपयोग करना चाहते हो सकता है:

<!--#include virtual="/includes/header.html" --> 
<!--#include virtual="/includes/nav.html" --> 

<p> content </p> 

<!--#include virtual="includes/footer.html" --> 

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

1

मुझे लगता है कि आपको इसके लिए अपना खुद का रोल करने की आवश्यकता होगी। यह फ़ंक्शन एक यूआरएल का दौरा किया और सामग्री हो जाता है:

Public Shared Function GetHTTPContent(ByVal url As String) As String 
    Dim req As WebRequest = System.Net.HttpWebRequest.Create(url) 
    Dim encode As System.Text.Encoding = System.Text.Encoding.GetEncoding("utf-8") 
    Dim sr As New StreamReader(req.GetResponse().GetResponseStream(), encode) 
    Dim HTTPContent As String = sr.ReadToEnd 

    sr.Close() 
    sr.Dispose() 

    Return HTTPContent 

End Function 
0

इनमें से बहुत सारे मौजूद हैं, यहाँ एक है:

HTTrack Website Copier

यह भी spidering कहा जाता है, क्योंकि यह एक ही बात खोज इंजन करते हैं।

0

मेरा त्वरित समाधान है जो आपकी स्थानीय वेबसाइट को .aspx फ़ाइलों के लिए क्रॉल करता है और HTML के बगल में .html फ़ाइलों को उत्पन्न करता है।

protected void ButtonGenerate_Click(object sender, EventArgs e) 
{ 
    RecursivelyGenerateHtmlFiles(Server.MapPath("~/"), new DirectoryInfo(Server.MapPath("~/"))); 
} 

private void RecursivelyGenerateHtmlFiles(string root, DirectoryInfo folder) 
{ 
    foreach (var aspxPage in folder.GetFiles("*.aspx")) 
    { 
     var destination = aspxPage.FullName.Substring(0, aspxPage.FullName.Length - 4) + "html"; 

     if (File.Exists(destination)) 
      File.Delete(destination); 

     var url = "http://" + Request.Url.Authority + "/" + aspxPage.FullName.Replace(root, ""); 
     var request = HttpWebRequest.Create(url); 

     File.WriteAllText(destination, new StreamReader(request.GetResponse().GetResponseStream()).ReadToEnd()); 
    } 

    foreach (var subDirectory in folder.GetDirectories()) 
    { 
     RecursivelyGenerateHtmlFiles(root, subDirectory); 
    } 
} 

मेरे लिए काम किया।

इसके अलावा, आप अपनी साइट से सभी .html फ़ाइलों के साथ फ़ोल्डर उत्पन्न करने के लिए .bat फ़ाइल को संपादित कर सकते हैं। क्रिएटिव एक फ्लैट प्रतिलिपि देते समय यह उपयोगी होता है।

set folder="Generated" 
cd /d %folder% 
for /F "delims=" %%i in ('dir /b') do (rmdir "%%i" /s/q || del "%%i" /s/q) 
cd /d .. 
xcopy /r /d /i /s /y /exclude:exclude.txt PAHtml Generated 

यहां बहिष्कृत है।

.dll 
.cs\ 
.aspx 
.pdb 
.csproj 
.user 
.vspscc 
.config