我正在尝试为jQuery.get(AJAX)调用生成一些XML,并且我从C#页面收到以下错误:“使用主题css文件需要页面上的标题控件。 (例如<head runat="server" />
)。“
生成XML的文件是一个简单的.aspx文件,完全由以下内容组成:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ChangePeopleService.aspx.cs" Inherits="ChangeRegister.Person.ChangePeopleService" EnableTheming="false" %>
使用Linq-to-XML进行代码隐藏,工作正常:
XElement xml = new XElement("People",
from p in People
select new XElement("Person", new XAttribute("Id", p.Id),
new XElement("FirstName", p.FirstName)));
HttpContext.Current.Response.ContentType = "text/xml";
HttpContext.Current.Response.Write(xml.ToString());
我知道该错误与Web.Config的<pages styleSheetTheme="default" theme="default">
标记有关,因为当我删除'styleSheetTheme'和'theme'属性时,XML生成正常。显然问题是每个其他页面都失去了它的样式。所有这些让我觉得我正在接近这个错误。
我的问题是:在C#中生成XML的接受方式是什么,供jQuery AJAX调用使用,比如说?
答案 0 :(得分:3)
如果我返回简单数据(不是页面),我可能不会使用aspx;这实际上是网络形式,但你要归还的不是网络形式。跳过两个选择:
HttpContext
来构建您的回复你也可以尝试(在aspx中)清除响应(Clear()
?)并在之后调用Close()
。但IMO比使用处理程序更加环绕。
答案 1 :(得分:1)
你需要使用theme =“” 例如:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ChangePeopleService.aspx.cs" Inherits="ChangeRegister.Person.ChangePeopleService" Theme="" %>
答案 2 :(得分:0)
尝试写一下Response.OutputStream
:
HttpContext.Current.Response.ContentType = "text/xml";
HttpContext.Current.Response.ContentEncoding = Encoding.UTF8;
using (TextWriter textWriter
= new StreamWriter(HttpContext.Current.Response.OutputStream, Encoding.UTF8))
{
XmlTextWriter writer = new XmlTextWriter(textWriter);
writer.WriteString(xml.ToString());
}