2010-01-18 19 views
20

के भीतर से रेंडर आंशिक का उपयोग कर रहा है मेरे पास एक HTMLHelper एक्सटेंशन है जो वर्तमान में एक स्ट्रिंग बिल्डर और जटिल तर्क की उचित मात्रा का उपयोग करके एक स्ट्रिंग देता है। मैं अब कुछ इसे करने के लिए अतिरिक्त है कि से लिया जाता है जोड़ना चाहते हैं एक आंशिक कॉल, कुछ इस तरह ... प्रस्तुत करनाएएसपी.नेट एमवीसी एक एचटीएमएल हेल्पर

public static string MyHelper(this HtmlHelper helper) 
{ 
    StringBuilder builder = new StringBuilder(); 
    builder.Append("Hi There"); 
    builder.Append(RenderPartial("MyPartialView")); 
    builder.Append("Bye!"); 
    return builder.ToString(); 
} 

अब निश्चित रूप से RenderPartial सीधे जवाबी कार्रवाई के लिए तो यह नहीं करता है renders टी काम करते हैं और मैंने स्ट्रिंग्स को आंशिक रूप से प्रस्तुत करने के लिए कई समाधानों की कोशिश की लेकिन सभी एक से अधिक गिरने लगते हैं, मैं उस आंशिक के भीतर HtmlHelper का उपयोग करता हूं।

क्या यह संभव है?

उत्तर

67

क्योंकि यह प्रश्न, हालांकि पुराना और चिह्नित उत्तर, Google में दिखाया गया है, मैं एक अलग उत्तर देने जा रहा हूं।

एएसपीनेट एमवीसी 2 और 3 में, एक HTML.Partial (...) विधि है जो रेंडरपार्टियल की तरह काम करती है लेकिन इसे सीधे प्रस्तुत करने के बजाय आंशिक दृश्य को स्ट्रिंग के रूप में लौटाती है।

आपका उदाहरण इस प्रकार हो जाता है:

//using System.Web.Mvc.Html; 
public static string MyHelper(this HtmlHelper helper) 
{ 
    StringBuilder builder = new StringBuilder(); 
    builder.Append("Hi There"); 
    builder.Append(helper.Partial("MyPartialView")); 
    builder.Append("Bye!"); 
    return builder.ToString(); 
} 
+2

बहुत बहुत धन्यवाद। हकीकत में, इसे सही उत्तर के रूप में चिह्नित किया जाना चाहिए। – Amrit

+11

पूरी तरह से काम करता है, मैं इस पंक्ति को हाइलाइट करना चाहता हूं: 'System.Web.Mvc.Html' का उपयोग करना। –

+0

धन्यवाद एक टन, आकर्षण की तरह काम किया :) –

-2

आपको एक सहायक से आंशिक कॉल नहीं करना चाहिए। हेल्पर्स आपके विचारों को "मदद" करते हैं, और बहुत कुछ नहीं। MVCContrib (यदि आपको अभी इसकी आवश्यकता है) से 0 रेंडरएक्शन विधि देखें (MVC v2 (यदि आप कुछ और महीनों तक प्रतीक्षा कर सकते हैं)। आप अपने मॉडल को एक मानक नियंत्रक कार्रवाई में पारित करने और आंशिक परिणाम वापस पाने में सक्षम होंगे।

+0

+1 हाँ मैं एक सहायक से एक आंशिक रेंडर करने के लिए नहीं करना चाहते। – griegs

+0

कुछ परिस्थितियों में हां (शायद इस सहित), लेकिन मैं अपने एचटीएमएल को एचटीएमएल में फाइलों की तरह रखने की कोशिश करता हूं जहां एचटीएमएल हेल्पर्स को गठबंधन करने के तरीके के आसपास तर्क करने के लिए उपयोग किया जाता है। इस तरह से मुझे अभी भी मेरे एचटीएमएल में अच्छी संपादक सुविधाएं मिलती हैं। हालांकि आंशिक रेंडर का उपयोग नहीं करना ठीक है, मैंने इस मामले में किया है। –

+0

यकीन नहीं है कि प्रश्न का उत्तर दिया .... – nixon

संबंधित मुद्दे