दिलचस्प पोस्ट
एक टेम्पलेट क्लास का कार्यान्वयन और घोषणा उसी हेडर फ़ाइल में क्यों होना चाहिए? हाइबरनेट शो असली एसक्यूएल कैसे पता कैसे एक फ़ोल्डर मौजूद है एनएसएलॉग गलत एन्कोडिंग मैं एक सूची बॉक्स में आइटम के माध्यम से कैसे लूप करूँ और फिर उन आइटम को हटाऊं? PHP संकेतन में मेरे नंबर को छपाई क्यों कर रहा है, जब मैंने इसे .000021 के रूप में निर्दिष्ट किया था? ब्लॉक के साथ `स्वयं` पर चक्र बनाए रखें प्लग इन स्थापित करने में असमर्थ Grails बैश: तारों के साथ जोड़ तोड़ (प्रतिशत चिन्ह) Windows बैच फ़ाइल में आप कैसे लूप करते हैं? सी # स्ट्रिंग.फ़ॉर्मेट के जावा समकक्ष () और स्ट्रिंग.जोन () SQL सर्वर में एक महीने में दिनों की संख्या निर्धारित करने के लिए कैसे? एक आईडीई के रूप में ईएमएसीएस का इस्तेमाल करना PHP से कॉल करें और वापसी कोड प्राप्त करें हम इनपुट को पढ़ने के बाद cin.clear () और cin.ignore () क्यों कॉल करेंगे?

रेज़र: घोषणात्मक HTML सहायकों

मैं एक साधारण घोषणात्मक HTML सहायक लिखने की कोशिश कर रहा हूं:

@helper Echo(string input) { @input } 

हेडर ठीक काम करता है, अगर मैं इसे पेज में एम्बेड करता हूं तो मैं इसका उपयोग करना चाहता हूं। लेकिन अगर मैं इसे किसी अलग .cshtml फ़ाइल में ले जाया और उस फ़ाइल को ~/Views/Helpers निर्देशिका में स्थानांतरित करता हूं, तो मेरा दृश्य अब संकलित नहीं किया जा सकता क्योंकि सहायक नहीं मिला है। रेजर पर स्कॉट गु के ब्लॉग लेख के मुताबिक इसे काम करना चाहिए।

मैं क्या गलत कर रहा हूं?

वेब के समाधान से एकत्रित समाधान "रेज़र: घोषणात्मक HTML सहायकों"

उस ScottGu पोस्ट में वर्णन के रूप में ~/Views/Helpers स्थान का स्थान MVC 3 RTM में काम नहीं करेगा उस लेख को लिखा गया था उस वक्त यह एक डिजाइन विचार था कि हम चारों ओर फेंक रहे थे लेकिन अंततः हम इसे लागू नहीं कर पाए थे।

App_Code में अपने सहायकों को रखता है, लेकिन कुछ निश्चित सीमाएं हैं जो कुछ MVC परिदृश्यों को प्रभावित करती हैं (उदाहरण के लिए: मानक MVC Html. सहायकों तक पहुंच नहीं)

साधारण समाधान:

प्रत्येक सहायक में तर्क जोड़ें WebView पृष्ठ पृष्ठ।

App_Code \ Test.cshtml:

 @using System.Web.Mvc.Html @using System.Web.Mvc @helper HelloWorld(WebViewPage page) { @page.Html.Label("HelloWorld") } 

किसी भी पृष्ठ में यह सहायक उपयोग:

  @Test.HelloWorld(this) 

जैसा कि मर्किंड ने कहा , हम हमारे संकलन मॉडल में कुछ सीमाओं के कारण ~/Views/Helpers स्थान का समर्थन नहीं कर पाए।

हम घोषणात्मक HTML सहायकों के लिए एक बेहतर समाधान पर काम कर रहे हैं, लेकिन यह v1 नहीं करेगा। V1 के लिए, हमारे पास दो समाधान हैं:

  1. ऐपकोड (जिसमें मार्सिन के रूप में कुछ समस्याएं हैं, लेकिन काम करता है)
  2. दाऊद इबो (टीम का सदस्य) में विज़ुअल स्टूडियो ऐड-इन है जो उन्हें आपके डीएलएल में संकलित करता है

मैंने स्कॉट के ब्लॉग में सूचीबद्ध चरणों का भी पालन किया था और यह भी काम कर पाने में सक्षम नहीं था।

मैंने कुछ खोज की और यह लिंक पाया: http://dotnetslackers.com/articles/aspnet/Experience-ASP-NET-MVC-3-Beta-the-Razor-View-Engine.aspx#s19-create-custom-helper -तरीका

चरणों का पालन किया और यह काम कर रहा है एपीसीडीई फ़ोल्डर दोनों के साथ-साथ कुंजी सहायक नामक फ़ाइल नाम डॉट सहायक नाम का उपयोग करते हुए लगता है।

App_Code में एक @ हैल्फर को ठीक से काम करने की आवश्यकता है:

 // These are important for `Html.RouteLink` and such. @using System.Web.Mvc; @using System.Web.Mvc.Routing; @using System.Web.Mvc.Html; @using System.Web.Mvc.Razor; @helper SomeHelper() { // Get page and pull helper references from it. var wvp = PageContext.Page as System.Web.Mvc.WebViewPage; var Url = wvp.Url; // UrlHelper access var Html = wvp.Html; // HtmlHelper access var ViewBag = wvp.ViewBag; // Helper code comes here... } 

मुझे पता है कि यह गेम में देर हो चुकी है … लेकिन, वर्तमान व्यू को सहायक फ़ंक्शन पर पास करें। दृश्य से आपको एचटीएमएल और हेल्पर फ़ंक्शंस तक पहुंच है।

CodeAngry के जवाब पर एक और ले, यह फाइल में हर विधि के लिए मददगार सक्षम बनाता है

 @using System.Web.Mvc; @using System.Web.Mvc.Html; @using System.Web.Mvc.Routing; @using System.Web.Mvc.Razor; @functions { private static WebViewPage page { get { return PageContext.Page as WebViewPage; } } private static System.Web.Mvc.HtmlHelper Html { get { return page.Html; } } private static UrlHelper Url { get { return page.Url; } } private static dynamic ViewBag { get { return page.ViewBag; } } }