2009-07-28 86 views
0

我意識到這可能是一個基本的東西,我應該知道,但我自學C#和asp.net自己,所以我有點迷失在這一點上。ASP.NET C#正確生成頁面的HTML

我現在有2頁。一個是.aspx(包含aspx.cs文件),它是空白的,並且從cs文件中的Page_Load函數爲它生成html。 HTML非常簡單,它只是一個圖像和一些文本。

第二個文件是一個shtml文件,它有很多東西,serverside包括可編輯和不可編輯的區域。我想把我的webapp放到這個文件中。我的asp.net應用程序使用Response.Write來寫出html。這個頁面並不流暢,因爲它只是將它寫在頁面的頂部,因爲它首先運行並在頂部生成它。

我該如何使它能夠在頁面內部生成HTML代碼,就像在特定的DIV中一樣,因此它不會弄亂頁面。起點在哪裏將學習如何做到這一點。

我應該注意到,我不需要用戶的任何交互。所有這些都應該馬上生成。

回答

1

所以如果我正確地理解了這些問題。 您已經有了一個現有的頁面/應用程序(shtml文件),您希望通過在現有頁面中包含來自ASP.NET頁面的輸出來擴展一些新的ASP.NET組件?

這不是「ASP.NET」支持的開箱即用的功能,而且「不會」能夠使用SSI執行aspx頁面。但是你可以做相反的事情,ASP.NET頁面支持SSI。所以如果你沒有在shtml文件中使用任何其他腳本,這可能是一個解決方案。

否則只有共同的解決辦法是,要麼使用一個AJAX框架,讓它從現有網頁中調用ASP.NET或使用iframe解決方案。在這兩種情況下,客戶端都可以重新調用ASP.NET頁面併合並結果。

然後你有一個控制ASP.NET頁面輸出的問題?

多態性播客對Controlling HTML in ASP.NET WebForms的好文章。

0

我不知道這會對你有多好,但你可以嘗試使用iframe來容納ASP.NET頁面嗎?這應該保持在指定的區域,而不是覆蓋你的shtml文件。這可能是需要思考的問題。

+0

此外,正如一個側面說明,如果這是一個純粹的ASP.NET頁面,你可以使用文字控制或佔位符,可以把你生成的HTML。 – darthnosaj 2009-07-28 16:53:57

1

您可以將Literal control添加到頁面的div內:

<div> 
    <asp:Literal ID="litMarkup" runat=server /> 
</div> 

然後在後臺代碼:

litMarkup.Text = "<strong>Your markup</strong>"; 
2

我認爲你需要一些基本的ASP.Net讀了文檔和教程。 Response.Write不是正確的方法 - 您需要了解ASP.Net頁面生命週期如何工作以及如何使用WebControl來呈現html。

ASP.Net試圖抽象出必須手動創建您的HTML大部分。

+0

對於那個重要的警示性陳述。 – AmitK 2009-07-28 17:10:25

0

如果您需要從C#代碼生成HTML輸出,並且您可以在多個位置使用它,我想您可能會想到類似於所謂的ASP.NET自定義控件(不是與「用戶控制」相混淆 - 儘管您可能也可以將這些解決方案與其他人一起使用,並建議使用文字控制)。 MSDN文檔將是一個很好的起點。但是,總的來說,編寫HTML代碼的模型(就像CGI應用程序一樣)不是通常的ASP.NET開發模型,因爲它大大地破壞了使用ASP的點.NET。如果您正在編寫自己的Web控件,那麼您大多會想要做這類事情,儘管這可能正是您正在做的事情(很難從描述中知道)。