2009-06-09 17 views
36

मैं एक क्रिया से एक दृश्य() वापस करना चाहता हूं, और परिणामी प्रतिक्रिया में डिफ़ॉल्ट पाठ/एचटीएमएल की बजाय सामग्री प्रकार का टेक्स्ट/xml होना चाहिए।एएसपी.नेट एमवीसी और टेक्स्ट/एक्सएमएल सामग्री प्रकार

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

मुझे पता है कि आप ContentResult वापस लौट कर सामग्री प्रकार निर्दिष्ट कर सकते हैं, लेकिन यह है कि मेरे दृश्य प्रस्तुत नहीं होती:

मैं, निम्नलिखित की कोशिश की है कोई सफलता के साथ।

मुझे आशा है कि मुझे स्ट्रिंग में दृश्य प्रस्तुत करने की आवश्यकता नहीं है, तो return Content() का उपयोग करें, इसलिए शायद मैं कुछ आसान तरीका देख रहा हूं।

+1

मैं कोई भी डुप्लीकेट के रूप में यह देखा हैरान हूँ: http://stackoverflow.com/questions/134905/what-is-the-best-way-to-return- xml-from-a-controllers-action-in-asp-net-mvc –

+0

@TomasLycken, ऐसा इसलिए हो सकता है क्योंकि किंवदंती और मैं स्वयं को एक्सएमएल को दृश्य में डाल रहा हूं और केवल सामग्री के टाइप टाइप को सेट करने की इच्छा रखता हूं, एक्सएमएल नहीं बना सकता नियंत्रक में फिर इसे दृश्य में पास करें। ये निश्चित रूप से दो अलग-अलग तरीके हैं। –

+1

सभी को एक और नोट यह है कि इस सामग्री प्रकार स्ट्रिंग को 'System.Net.Mime.MediaTypeNames.Text.Xml' के रूप में संदर्भित किया जा सकता है। – jamiebarrow

उत्तर

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

धन्यवाद, आप एक प्रतिभाशाली हैं! –

+0

सुंदर, मुझे पता नहीं था कि आप पेज पर सामग्री टाइप सेट कर सकते हैं। यह उत्कृष्टता है: पी –

+2

और यदि आपके पास रेज़र दृश्य है, तो यह '@ {Response.ContentType = System.Net.Mime.MediaTypeNames.Text.Xml होना चाहिए; } ' – avs099

0

क्या आपने codebehind पृष्ठ में दृश्य की पूर्व रेंडर विधि से प्रतिक्रिया.content सेट करने का प्रयास किया है? यह स्पष्ट रूप से माना जाता है कि आप वेबफॉर्म व्यू इंजन

+0

मेरे विचार में कोडबीआईंड नहीं है। – andreialecu

+0

तो एक जोड़ें ;-)। –

+16

: -/एक – Charlino

38

का उपयोग कर रहे हैं, आपको स्ट्रिंग को प्रस्तुत करने की आवश्यकता है। वापस जाने के लिए text/xml निम्न कार्य करें:

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

जोड़ें, ठीक है, मुझे पहले से ही इस बारे में पता था (प्रश्न में निर्दिष्ट), लेकिन मैं इससे बचना चाहता हूं। – andreialecu

+1

मेरे लिए काम करता है क्योंकि मैं एएसपीएक्स व्यू पेज की आवश्यकता के बिना एक्सएमएल प्रतिक्रिया वापस करना चाहता हूं। – stephen

1

आप एक ऐसा दृश्य चीजों को ओवरराइड करता है और उत्पन्न एचटीएमएल, उसके स्वयं के संदर्भ प्रकार सहित की जरूरत है।

एक कस्टम व्यू सीधे Response.Write को प्रस्तुत कर सकता है (एक कक्षा के लिए परावर्तक में JsonResult देखें जो आपको आवश्यकतानुसार बहुत समान है)।

इंटरमीडिएट स्ट्रिंग के बिना एक्सएमएल प्रस्तुत करने के लिए, Response.Output पर बनाए गए अपने XML को XmlWriter पर सहेजें।

6

उपयोगकर्ता नियंत्रण (एएससीएक्स) ContentType = "text/xml" स्वीकार नहीं करता है।

समाधान:

public ActionResult xxx() 
    { 
    Response.ContentType = "text/xml"; 
    return View("xxx.ascx"); 
    } 
संबंधित मुद्दे