为什么Response.Write(“<someting>”)在ASP.NET代码隐藏中不起作用?</someting>

时间:2011-05-14 07:29:54

标签: asp.net

我在ASP.NET代码隐藏文件中有这段代码:

Response.Write("<someting>")

但它不起作用。如果我删除<标记分隔符,则会将内容写入页面。

我的问题是:如何从代码隐藏中将XML字符串写入页面?

3 个答案:

答案 0 :(得分:4)

您需要对其进行HTML编码:

Response.Write(HttpUtility.HtmlEncode("<someting>"));

但是如果您正在编写XML,则应首先使用XDocumentXmlWriterXmlDocument来构建它,以确保它有效,然后将其写入响应。

答案 1 :(得分:3)

你正在做的事情已经很好了。您的<someting>标记未显示在页面上,因为浏览器需要HTML,因此它会将<someting>解释为不理解的HTML标记,并且不显示任何内容。如果你查看页面的来源,你应该看到标签。

您的XMLHttpRequest(XHR)请求应该能够毫无问题地将此数据作为XML读取,即使它没有直接显示在浏览器中。但是,如另一个答案中所述,理想情况下,您应该将内容类型更改为text/xml,以便客户端知道所期望的数据格式。

答案 2 :(得分:2)

如果要输出XML,则应首先按如下方式设置内容类型:

Response.ContentType = "text/xml";

此外,最好使用Handler(.ashx),而不是页面(.aspx),因为它会删除您不需要的各种额外页面/表单处理。

然后随意使用Response.Write生成您的页面,例如:

Response.Write("<something>foobar</something>");

由于它是XML,因此您需要使用XML查看器查看生成的输出。如果确保内容类型正确,Internet Explorer将显示格式良好的XML作为树结构。

您还应该确保XML内容以:

开头
<?xml version="1.0"?>