在ASPX页面中避免标准HTML输出

时间:2011-06-21 15:12:25

标签: c# asp.net http

我确定这是RTFM,但我无法弄清楚我应该选择哪种FM。

我正在尝试提供JNLP(Java Web Start)文件(这是一种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>

此代码附加到输出。

我该如何避免这种情况?我尝试从Response.End()调用Page_Load(),但据报道它是邪恶的,它引发了令人讨厌的异常。 Response.Close()更糟糕,打破了HTTP。我也试过简单地删除正文中的所有HTML,但ASP然后抱怨它需要一个<head runat="server">来称为“主题CSS”(我不确定这意味着什么)。

任何线索?

谢谢!

4 个答案:

答案 0 :(得分:4)

强制性Use a Handler

这为您提供了直接输出信息所需的所有控制权。这篇文章甚至给出了一个输出图像的例子。

答案 1 :(得分: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.

答案 2 :(得分:1)

您可以通过将EnableTheming =“false”和Theme =“”添加到Page指令

来关闭主题

所以你的页面会变成

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

在任何输出之前添加Response.Clear()应该按预期工作。然而布拉德的评论很有用,这对HTTP Handler

来说是完美的

答案 3 :(得分:0)

使用Response.Clear()或只是从页面中删除它!