2011-06-21 38 views
2

我敢肯定,這是RTFM,但我不能找出哪些FM我應該R.避免在ASPX頁面標準的HTML輸出

我想成爲一個JNLP(的Java Web開始)文件(這是一種XML格式),並且ASP.Net堅持將HTML代碼附加到響應主體。

更多詳細信息:我有一個.aspx文件和一個附帶的.aspx.cs文件。這些是使用「新頁面」嚮導生成的。在.aspx.cs文件的Page_Load()中,我生成了一些XML,請執行Response.ContentType = "application/x-java-jnlp-file",您知道該演練。

.aspx文件,然而,包含:

<%@ Page Language="C#" CodeBehind="MyPage.aspx.cs" Inherits="MyProj.MyPage" EnableSessionState="False" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" > 
<head runat="server"> 
    <title>Untitled Page</title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 

    </div> 
    </form> 
</body> 
</html> 

該代碼被附加到輸出。

我該如何避免這種情況?我試着從Page_Load()打電話給Response.End(),但據報道它是邪惡的,它會拋出討厭的例外。 Response.Close()更糟,並且會破壞HTTP。我也試着簡單地從正文中刪除所有的HTML,但ASP則抱怨它需要一個名爲「主題CSS」的東西(我不確定這意味着什麼)。

任何線索?

謝謝!

+1

我錯過了什麼,或者這會是一個偉大的時間來使用[處理程序](http://www.dotnetperls.com/ashx)? –

+0

+1:這個問題顯示研究工作;它是有用的,清楚的,第一行讓我笑:) – Town

+0

你有沒有考慮創建一個自定義處理程序(ashx),輸出基於模板的XML?如果模板相當複雜,則可以使用T4模板或xslt生成所需的xml。 –

回答

1

你可以通過在頁面直接添加EnableTheming =略去

所以,你的頁面將成爲

<%@ Page Language="C#" CodeBehind="MyPage.aspx.cs" 
     Inherits="MyProj.MyPage" EnableSessionState="False" 
     EnableTheming="false" Theme=""%> 

任何輸出之前添加Response.Clear()如預期應該再工作。然而,布拉德的評論是現貨,這是完美的HTTP Handler

+0

將此標記爲答案,因爲它已成爲我的quickfix。不過,我明白處理者會是真正的答案。謝謝大家! – skrebbel

0

隨着Response.Clear()或只是從網頁中刪除它!

+0

從問題中解釋,從頁面中刪除它不起作用。但是,何時調用Response.Clear()?不在Page_Load()中,我假設,因爲在* .aspx中的HTML被渲染之前,它似乎被稱爲*。 – skrebbel

+0

嗯,感謝您的回覆,我嘗試了更多努力,「只是從頁面中刪除它!」原來添加'EnableTheming =「False」StylesheetTheme =「」Theme =「」'指向'Page'指令的竅門(在我的情況下)。謝謝:-)(我只是先完成了「EnableTheming =」False「',這顯然不夠好) – skrebbel

4

強制性Use a Handler

這爲您提供了直接輸出信息所需的全部控制。這篇文章甚至給出了一個輸出圖像的例子。

+0

這是提供非html內容的最佳方式。無論是HTML,圖像,文件等,它都是快速,輕量級的(沒有完整的頁面生命週期),並且完全控制哪些位返回到瀏覽器。 – NotMe

1

只是有頁面:

<%@ Page Language="C#" CodeBehind="MyPage.aspx.cs" Inherits="MyProj.MyPage" EnableSessionState="False" %> 

刪除的頁面,併爲HTML其餘的海報建議,並做了Response.Clear()..

這是重要你在

之後刪除所有內容
<%@ Page Language="C#" CodeBehind="MyPage.aspx.cs" Inherits="MyProj.MyPage" EnableSessionState="False" %> declaration.