Ответ 1
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage"
ContentType="text/xml" %>
Я хочу вернуть View() из действия, и результирующий ответ должен иметь тип содержимого text/xml вместо стандартного текста /html.
Я пробовал следующее, без успеха:
Response.ContentType = "text/xml";
return View();
Я знаю, что вы можете указать тип содержимого, возвращая ContentResult
, но это не отображает мой просмотр.
Я надеюсь, что мне не нужно отображать представление в строку, а затем используйте return Content()
, поэтому я, вероятно, пропустил какой-то простой способ.
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage"
ContentType="text/xml" %>
Вам нужно отобразить строку. Чтобы вернуть текст /xml, выполните следующие действия:
return new ContentResult {
ContentType = "text/xml",
Content = UTF8.GetString(yourXmlString),
ContentEncoding = System.Text.Encoding.UTF8
};
Пользовательский контроль (ASCX) не принимает ContentType = "text/xml".
Решение:
public ActionResult xxx()
{
Response.ContentType = "text/xml";
return View("xxx.ascx");
}
Вам нужно представление, которое не переопределяет и не генерирует HTML, включая его собственный тип контекста.
Пользовательский вид может непосредственно отображать Response.Write(см. JsonResult
в Reflector для класса, который очень похож на то, что вы потребуется).
Чтобы отобразить XML без промежуточной строки, сохраните XML в XmlWriter
, созданном поверх Response.Output
.
Пробовали ли вы установить параметр response.content из метода предварительного рендеринга view на странице codebehind? что, очевидно, предполагается, что вы используете механизм просмотра веб-форм
Если вы ищете Razor (.cshtml) представление, то установите тип содержимого в коде представления:
@{
Response.ContentType = "text/xml";
}