2011-01-11 9 views
8

हम सामान्य एमवीसी प्रवाह के बाहर रेजर का उपयोग कर रहे हैं। हमारे रेज़र विचारों को एक सीएस एक्सटेंशन के माध्यम से एक्सएसएल ट्रांसफॉर्म के भीतर से बुलाया जाता है। रेजर व्यू का आउटपुट एक स्ट्रिंग के रूप में एक्सएसएल ट्रांसफॉर्म पर वापस कर दिया जाता है। कुछ मामलों में हम एक एक्सएसएल वैरिएबल में रेजर व्यू के परिणाम को कैप्चर करते हैं और फिर हमारे मॉडल पर वापस दूसरे रेजर व्यू में डेटा के रूप में उपभोग करने के लिए पास करते हैं। जब ऐसा होता है तो हम पहले दृश्य को डबल एन्कोडेड होने के साथ समाप्त करते हैं, एक बार रेजर द्वारा, दूसरी बार xsl ट्रांसफॉर्म के माध्यम से। हमें आउटपुट को एन्कोड किए बिना रेजर चलाने में सक्षम होना चाहिए।संपूर्ण रेजर व्यू के लिए HTML एन्कोडिंग को अक्षम कैसे करें

क्या यह संभव है? हम इसके बारे में कैसे जाएंगे?

+2

नहीं पूरा जवाब है, लेकिन आप उपयोग कर सकते हैं @ (नई एन्कोडिंग को बाईपास करने के लिए एचटीएमएलस्ट्रिंग (मॉडल। कुछ)) या @ एचटीएमएल.रॉ (मॉडल। कुछ)। – jhexp

+0

धन्यवाद। मैं दृश्य में उपलब्ध एन्कोडिंग सुविधाओं का उपयोग करने में सहज हूं। इस मामले में मैं व्यू इंजन के आउटपुट को दूसरी प्रक्रिया में वापस कर रहा हूं और पूरे दृश्य पर इंजन द्वारा किए गए एन्कोडिंग को रोकने की आवश्यकता है। यह दृश्य में कुछ एन्कोडेड डेटा एम्बेड करने की बात नहीं है। मैं समझता हूं कि यह एक मानक कार्यान्वयन नहीं है। हमारे मामले में, हमारे पास एक विरासत प्रणाली है जिसमें कई पिछड़ा संगतता बाधाएं हैं जिन्हें हम आधुनिकीकरण करने की कोशिश कर रहे हैं। यदि सफल हो, तो इस तरह से रेजर का उपयोग करने से हम एक या दो साल में एमवीसी में माइग्रेट कर सकेंगे। वैसे, इनपुट के लिए धन्यवाद। – gidmanma

उत्तर

14

के बाद से आप अपने पूरे दृश्य में एन्कोडिंग को निष्क्रिय करना चाहते, आपका सर्वश्रेष्ठ दांव आपका अपना दृश्य आधार वर्ग WebPageBase से इनहेरिट (और फिर अपने विचार अपने नए प्रकार निर्दिष्ट करने @inherits का उपयोग करना चाहिए) बनाने के लिए किया जाएगा और इतने Write(object value) विधि ओवरराइड कि यह इसके बजाय WriteLiteral() पर कॉल करता है। इस तरह आउटपुट एन्कोड नहीं किया जाएगा।

+0

धन्यवाद मार्कस - मैं उम्मीद कर रहा था कि आप इसमें घुसेंगे। मैं इसे जाने दूंगा। – gidmanma

5

इसके अलावा answer above आप इस ताकि तरह प्राप्त होगा:

public abstract class TextBasedViewPage : System.Web.Mvc.WebViewPage 
{ 
    public override void Write(object value) 
    { 
     WriteLiteral(value); 
    } 
} 

public abstract class TextBasedViewPage<TModel> : System.Web.Mvc.WebViewPage<TModel> 
{ 
    public override void Write(object value) 
    { 
     WriteLiteral(value); 
    } 
} 

फिर अपने ध्यान में रखते हुए आप के साथ शुरू कर सकते हैं:

@inherits MyNamespace.TextBasedViewPage<MyModelNamespace.Model> 
संबंधित मुद्दे