Soru ASP.NET MVC ve metin / xml içerik türü


Bir eylemden bir View () döndürmek istiyorum ve sonuçta oluşan yanıt, varsayılan metin / html yerine bir içerik türünde metin / xml olmalıdır.

Aşağıdakileri denedim, hiç bir başarıya ulaşmadım:

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

İçerik türünü döndürerek belirtebileceğinizi biliyorum ContentResultama bu benim View'imi oluşturmuyor.

Umarım manzarayı bir dizgiye dönüştürmek zorunda değilim. return Content()Bu yüzden muhtemelen kolay bir yolla ilgileniyorum.


36
2018-06-09 18:44


Menşei


Şaşırdım, kimse bunu kopya olarak görmedi: stackoverflow.com/questions/134905/... - Tomas Lycken
@TomasLycken, efsane ve kendim XML'in kendisini Görünüme koyması ve sadece Görünümün ContentType'ını ayarlaması, Kontrolörde XML oluşturmaması ve bunu View'a iletmesi olabilir. Bunlar kesinlikle iki farklı yöntemdir. - John Washam
Herkese bir not daha, bu içerik tipi dizenin System.Net.Mime.MediaTypeNames.Text.Xml. - jamiebarrow


Cevaplar:


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

54
2018-06-09 19:18



Teşekkürler, sen bir dahisin! - Luke Sampson
güzel, ContentType'ı sayfanın kendisinde ayarlayabileceğinin farkında değildim. Bu awessomeness: P - Anthony Shaw
ve eğer jilet görünümünüz varsa, o zaman @{ Response.ContentType = System.Net.Mime.MediaTypeNames.Text.Xml; } - avs099


Dizeyi oluşturmalısınız. Metin / xml dönmek için aşağıdakileri yapın:

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

38
2018-06-09 18:51



Eh, bu konuda zaten biliyordum (soruda belirtildi), ama bundan kaçınmak istiyorum. - andreialecu
Benim için çalışıyor çünkü bir aspx View sayfasına ihtiyaç duymadan bir XML yanıtı vermek istiyorum. - stephen


Kullanıcı denetimi (ASCX) ContentType = "text / xml" kabul etmez.

Çözüm:

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

6
2017-12-14 13:19





Kendi bağlam türü de dahil olmak üzere, işleri geçersiz kılan ve HTML oluşturmayan bir görünüme ihtiyacınız vardır.

Özel bir görünüm doğrudan Response.Write öğesine işlenebilir (bkz. JsonResult Reflektörde ihtiyacınız olana çok benzeyen bir sınıf için).

Ara dize olmadan XML oluşturmak için, XML'inizi bir XmlWriter üzerinde yaratılmış Response.Output.


1
2018-06-09 19:32





Codebehind sayfasında, görünümün pre render yönteminden response.content ayarlamayı denediniz mi? Bu açıkça, web formu görüntüleme motorunu kullandığınızı varsayar


0
2018-06-09 18:46



Benim görüşümde codebehind yok. - andreialecu
yani bir tane ekle ;-). - Joel Martinez
: - / Ekleme - Charlino