दिलचस्प पोस्ट
सी में अपारदर्शी सूचक क्या है? बैच कमान सभी संभव पिंग मुद्दों को पकड़ने के लिए श में 'खोज' के '-प्रूमेन' विकल्प का उपयोग कैसे करें? अलग JSON एपीआई सर्वर और क्लाइंट अलग करें? LINQ: अलग मूल्य जेम्नेक्स के साथ LambdaConversionException: JVM बग? एंड्रॉइड एसडीके सामग्री लोडर NullPointerException के साथ विफल संघ के साथ आदेश कैसे करें एचटीएमएल 5 के कैनवास के साथ स्विंग पद्धति। आईआईजेडडेटा (सरणीफ़ोक्स, 0,0) मैक पाठ / कोड संपादक बूटस्ट्रैप मोडल में jQuery के DatePicker को कार्यान्वित करना कॉपी निर्माता में असाइनमेंट ऑपरेटर को कॉल करना IPhone में एक पारदर्शी पीएनजी छवि को कैसे टिंट करें? एक दृश्य नियंत्रक के दृश्य को लोड करने का प्रयास करते हुए इसे वितरित करना है … UISearchController पायथन में HTML को पार्सिंग – एलएक्सएमएल या सुंदरसूप? किस प्रकार के उद्देश्य के लिए इनमें से बेहतर है?

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

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

@helper Echo(string input) { @input } 

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

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

Solutions Collecting From Web of "रेज़र: घोषणात्मक 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; } } }