Подтвердить что ты не робот

Тип содержимого ASP.NET MVC и text/xml

Я хочу вернуть View() из действия, и результирующий ответ должен иметь тип содержимого text/xml вместо стандартного текста /html.

Я пробовал следующее, без успеха:

Response.ContentType = "text/xml"; 
return View();

Я знаю, что вы можете указать тип содержимого, возвращая ContentResult, но это не отображает мой просмотр.

Я надеюсь, что мне не нужно отображать представление в строку, а затем используйте return Content(), поэтому я, вероятно, пропустил какой-то простой способ.

4b9b3361

Ответ 1

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" 
    ContentType="text/xml" %>

Ответ 2

Вам нужно отобразить строку. Чтобы вернуть текст /xml, выполните следующие действия:

return new ContentResult {
    ContentType = "text/xml",
    Content = UTF8.GetString(yourXmlString),
    ContentEncoding = System.Text.Encoding.UTF8
}; 

Ответ 3

Пользовательский контроль (ASCX) не принимает ContentType = "text/xml".

Решение:

public ActionResult xxx()
  {
     Response.ContentType = "text/xml";
     return View("xxx.ascx");
  }

Ответ 4

Вам нужно представление, которое не переопределяет и не генерирует HTML, включая его собственный тип контекста.

Пользовательский вид может непосредственно отображать Response.Write(см. JsonResult в Reflector для класса, который очень похож на то, что вы потребуется).

Чтобы отобразить XML без промежуточной строки, сохраните XML в XmlWriter, созданном поверх Response.Output.

Ответ 5

Пробовали ли вы установить параметр response.content из метода предварительного рендеринга view на странице codebehind? что, очевидно, предполагается, что вы используете механизм просмотра веб-форм

Ответ 6

Если вы ищете Razor (.cshtml) представление, то установите тип содержимого в коде представления:

@{
    Response.ContentType = "text/xml";
}