2009-10-05 2 views
1

Я пытаюсь сгенерировать XML-код для вызова jQuery.get (AJAX), и я получаю следующую ошибку на моей странице C#: «Использование themed css-файлов требует управления заголовком на странице (например, <head runat="server" />). "Создание XML в C# для jQuery

Файл генерации XML является простой файл .aspx, целиком состоящий из:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ChangePeopleService.aspx.cs" Inherits="ChangeRegister.Person.ChangePeopleService" EnableTheming="false" %> 

с использованием Linq коде-к-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()); 

I знаете, что ошибка связана с тегом Web.Config <pages styleSheetTheme="default" theme="default">, потому что, когда я удаляю атрибуты 'styleSheetTheme' и 'theme', XML генерируется нормально. Очевидно, проблема состоит в том, что каждая другая страница теряет свой стиль. Все это заставляет меня думать, что я приближаюсь к этому неправильно.

Мой вопрос: что такое принятый способ генерации XML в C#, для потребления при вызове JQuery AJAX, скажем?

ответ

3

Если я возвращаю простые данные (не страницы), я, вероятно, не будет использовать ASPX; это действительно веб-формы, но то, что вы возвращаете, не является веб-формой. Возможны два варианта:

  • использование ASP.NET MVC; звучит банально, но он действительно предназначен для возврата различных типов ответов гораздо элегантнее.
  • используйте обработчик (ashx) - который пропускает все шумы в веб-форме, просто оставляя вас с HttpContext, с помощью которого можно построить ответ

Вы также можете попробовать (в пределах aspx) очистить отклик (Clear()?) И позвонить по телефону Close(). Но IMO намного более круглая, чем просто использование обработчика.

+0

Смотрите также: http://stackoverflow.com/questions/ 878695/how-to-return-an-xml-string-as-the-action-result-in-mvc –

+0

Я использовал параметр «ashx», не имея моего MVC-сайта, и, похоже, сделал трюк , спасибо Marc –

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()); 
} 
+0

Это, похоже, не имеет никакого значения, Эндрю :-(Спасибо, хотя –

1

Вы должны использовать тему = «» пример:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ChangePeopleService.aspx.cs" Inherits="ChangeRegister.Person.ChangePeopleService" Theme="" %> 
Смежные вопросы