2009-07-16 96 views
2

我有一個ASP.NET的經驗非常少,我做了一些自我訓練開始之前,我寫我的第一個網站/應用,這將是一個校準工具。現在,這種公用設施的工作方式並不是我的問題。然而,該實用程序最終需要嵌入別人的網站,或者作爲通過我的代碼訪問網頁的URL,或嵌入(例如,作爲HTML框架或iframe)。爲了弄清楚這個基礎知識,我編寫了兩個非常簡單的ASP.NET網站,一個包含框架集的「父」和一個我試圖放入其中一個框架的「孩子」。如何將ASP.NET網站(或Web應用程序)嵌入到另一個?

父 「的Default.aspx」 HTML代碼基本上是這樣的:

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title>Parent Site Test 1</title> 
</head> 

<frameset cols="300,*"> 
    <frame name="outer" src="parent.aspx" noresize></frame> 
    <frame name="inner" src="[what do I put here?]"</frame> 
</frameset> 

</html> 

的 「parent.aspx」 頁面只有最基本的HTML它:

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     I am the parent web form. 
    </div> 
    </form> 
</body> 
</html> 

孩子網網站(因爲我現在有它)生活在一個獨立的解決方案VS2008,爲這項工作的目的,因爲我試圖重現在別人的網站必須引用我的校準網頁/網站/事情的條件。我原本以爲會有一些方法將整個孩子打包成單個DLL,然後有一些方法可以告訴父母使用該DLL作爲孩子框架的來源。這來自我在Java世界的經驗 - 使用JBoss和J2EE,這很容易解決,因爲這個孩子只會被部署爲另一個EAR文件。

是與VS2008和ASP.NET完全沒有經驗,我花了好幾個小時,在谷歌在過去的幾天裏試圖尋找一個答案,但沒有成功。

  • 是我試圖做的合理的;這是解決問題的正確方法嗎?

  • 我可以通過某種方式將它打包到單個DLL中來將孩子作爲一個相當獨立且自包含的網站(或Web應用程序...我仍然不清楚這些差異)嗎?如果是,那我該如何在VS2008中從我的網站/應用程序中真正創建這個DLL,然後如何在父網站中引用它?

  • 如果我完全偏離了軌道在這裏,我怎麼可以創造一些其他方式這個父/子組合?孩子(真的,我最終會寫的校準實用程序)確實需要在ASP.NET中(使用C#),但我無法控制父站點,因爲它是別人的代碼,他們只是想成爲能夠降低我的效用。

感謝您的幫助!你可以越具體,越好。我對ASP.NET和Visual Studio很新,儘管我有很多其他語言和IDE編程的經驗。

回答

1

如果您知道客戶端還使用ASP.Net,你可以把它做成一個用戶控件。

1

如果您有IIS6或更高版本,則可以運行這兩個Web應用程序,並在您的src =「[this goes here]」中放置子網站的本地URL(可能爲http://localhost/ChildTestWebsite/child.aspx)。然後當你加載http://localhost/ParentTestWebsite/Default.aspx你應該看到框架。爲了將它打包成一個單獨的DLL,我相信你必須使它像Joel所說的那樣只是一個用戶控件,否則你就有DLL + aspx頁面。

+0

當我有DLL + aspx文件時,DLL中有什麼?這是所有的代碼隱藏的東西?例如。如果我有Default.aspx,那麼Default.aspx.cs會在DLL內部結束嗎? – 2009-07-16 16:52:58

+0

是的。 您將擁有DLL文件+ aspx文件+ ascx文件以及配置等。所有後面的代碼將在DLL中。 – 2009-07-16 17:37:41

1

,你應該怎麼做,取決於家長和孩子之間的互動如何。

如果父節點不打算訪問子節點上的任何服務器端功能,則可以引用frame標記中src中的絕對http路徑。如果您嘗試訪問JavaScript方法並且這兩個應用程序位於不同的Web服務器上,那麼您可能會在某些瀏覽器中遇到安全問題,但這不是.NET特定的。

如果父節點要訪問服務器端功能,則需要在父項目的某處提供服務器端組件。這更復雜。我認爲你必須將所有子頁面構建爲包含在父aspx頁面中的Web控件。

1:將子項目構建爲可供父級使用的服務器控件的Web控件庫。這是節省部署的最佳方法。一切都建成一個單一的DLL。這最大的缺點是服務器控件只能用代碼開發。你沒有視覺設計師來幫助你。

2:創建一個Web應用程序項目。在VS2008中,您可以通過「新建項目」執行此操作,然後找到「ASP.NET Web應用程序」模板。這意味着一個Web項目,其中所有代碼(cs文件中的所有內容)都被構建到一個dll中。在這種情況下,您可以創建父頁面可以使用的用戶控件(ascx文件)。這樣做的缺點是用戶控件必須在runnin web應用程序上運行,因此您必須將所有ascx文件複製到父網站的已部署位置。該DLL也必須複製到父網站中的bin文件夾。在Visual Studio中設計圖形用戶界面非常簡單。爲ascx用戶控件設計gui和代碼與創建完整的aspx網頁非常相似。

相關問題