2010-04-22 15 views
7

मैं कस्टम एचटीएमएल हेल्पर्स बनाने के लिए दो सिफारिशों में आया हूं: या तो मौजूदा एक का विस्तार करें, या अपनी खुद की कक्षा लिखें।एमवीसी अपना खुद का एचटीएमएल सहायक बनाते हैं, मैं httpcontext तक कैसे पहुंच सकता हूं?

मैं अपना कस्टम कोड अलग रखना पसंद करूंगा, ऐसा लगता है कि एक सभ्य आकार के अनुप्रयोग के लिए हेल्पर्स का विस्तार करने के लिए थोड़ा सा मैला लगता है।

लेकिन विस्तार में मुझे जो लाभ दिखाई देता है वह यह है कि 'यह एचटीएमएल हेल्पर सहायक' पैरामीटर के रूप में पारित किया गया है, जिसके माध्यम से मैं ViewContext.HtmlContext प्राप्त कर सकता हूं।

मेरा सवाल है, मैं अपनी खुद की सहायक कक्षा कैसे रोल कर सकता हूं और अभी भी मेरे पास ViewContext.HtmlContext उपलब्ध है?

धन्यवाद!

संपादित करें: जो मैं करना चाहता हूं, वह "MyHelperClass" बना रहा है जो कुछ कस्टम ऑब्जेक्ट्स को HTML के रूप में प्रस्तुत करेगा। मुझे एक एचटीएमएल सहायक "विस्तार" करने की ज़रूरत नहीं है क्योंकि मैं जो कुछ भी प्रदान करता हूं उसका उपयोग नहीं कर रहा हूं। जैसा कि आपने दिखाया है, एचटीएमएलहेपर का विस्तार करने का एकमात्र कारण httpcontext तक पहुंचना है। लेकिन मेरा सवाल यह था कि, मौजूदा हेल्पर को विस्तार किए बिना, मैं अपनी कक्षा में httpcontext तक कैसे पहुंच सकता हूं। धन्यवाद

+1

अस्पष्टीकृत downvotes वास्तव में –

उत्तर

12
public static class HtmlHelperExtensions 
{ 
    public static HttpContextBase GetContext(this HtmlHelper htmlHelper) 
    { 
     return htmlHelper.ViewContext.HttpContext; 
    } 
} 
+1

'system.web.httpcontext के प्रकार system.web.httpcontextbase परिवर्तित नहीं कर सकते' उपयोगी होते हैं। क्या यह विधि इसके बजाय httpcontextbase लौट रही है? –

+0

@rj, हाँ आप सही हैं, इसे – mxmissile

+0

हां, HttpContextBase, मैं क्षमा चाहता हूं। मुझे संदेह है कि आप वास्तव में इस विधि का उपयोग करेंगे। एक विस्तार विधि के अंदर जब HtmlHelper.ViewContext.HttpContext ऑब्जेक्ट तक पहुंचने के लिए एक स्थिर वर्ग और विधि का उपयोग करने का एक उदाहरण है। परियोजनाओं के लिए स्थैतिक HtmlHelperExtensions क्लास में कई विधियां हैं। (हालांकि, मैं सामान्य रूप से किसी अन्य धागे के लिए विस्तार विधियों के अपने नापसंद को आरक्षित कर दूंगा)। – bradjive

1

तुम भी उपयोग कर सकते हैं: System.Web.HttpContext.Current.Request.RequestContext

+0

इससे मुझे उस उत्तर का नेतृत्व किया जो मैं ढूंढ रहा था। मेरे पास एक htmlHelper था और मैं अनुरोध करने की कोशिश कर रहा था। उपाय? सहायक। ViewContext.HttpContext.Request - धन्यवाद – BrianLegg

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