asp.net mvc - एमवीसी 4 @Scripts "मौजूद नहीं है"




asp.net-mvc razor (16)

  1. : दृश्य पृष्ठ हटा दें।
  2. : नेमस्पेस webconfig जोड़ें (देखें निर्देशिका में)
  3. : एक कोशिश देखें!

सौभाग्य...

मैंने अभी एक एएसपी.नेट एमवीसी 4 प्रोजेक्ट बनाया है और Index लिए कंट्रोलर और रेजर व्यू Create और क्रियाएं बनाने के लिए विजुअल स्टूडियो 2012 आरसी का इस्तेमाल किया है।

जब मैं एप्लिकेशन चलाने के लिए आया, और दृश्य दृश्य में ब्राउज़ किया, तो निम्न त्रुटि दिखाई गई:

कंपाइलर त्रुटि संदेश: CS0103: नाम 'स्क्रिप्ट' वर्तमान संदर्भ में मौजूद नहीं है

समस्या निम्न कोड है जो दृश्य के नीचे स्वचालित रूप से जोड़ा गया था:

@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
}

स्क्रिप्ट क्यों मौजूद नहीं है?

मैंने असेंबली सिस्टम.Web.Mvc.dll, v4.0.0.0 में बेस वेब पेज क्लास को देखा

मैं निम्नलिखित सहायक गुणों को उपलब्ध देख सकता हूं:

  • अजाक्स
  • एचटीएमएल
  • यूआरएल

लेकिन स्क्रिप्ट्स नामक कुछ भी नहीं।

कोई विचार?

संपादित करें:

मेरी Web.config फ़ाइल इस तरह दिखती है (विज़ुअल स्टूडियो द्वारा निर्मित एक से छूटा हुआ):

  <system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
      <namespaces>
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />
      </namespaces>
    </pages>
  </system.web.webPages.razor>

संपादित करें # 2:

लोग @Scripts सहायक का उपयोग करने के बारे में ब्लॉगिंग कर रहे हैं:

फिर भी एक नया विंडोज 8 इंस्टॉल पर विजुअल स्टूडियो 2012 आरसी स्थापित करने के बाद भी मैं अभी भी @Scripts का उपयोग करने में असमर्थ @Scripts भले ही विजुअल स्टूडियो इसे जेनरेट व्यू में जोड़ता है!

समाधान नीचे प्रस्तुत किए गए हैं।

मुझे यकीन नहीं है कि इसे कैसे बंद करें, क्योंकि अंत में एक समस्या इस मुद्दे को हल करने लगती थी। मैंने दोबारा जांच की है कि मैंने एक नई परियोजना का उपयोग करके एक साफ इंस्टॉल किया था। लेकिन एक ही असफल परियोजना मैंने विभिन्न अद्यतनों के बाद अब ठीक काम किया है और कोई मैन्युअल स्पष्ट हस्तक्षेप नहीं किया है। सभी विचारों के लिए धन्यवाद लेकिन उस समय निश्चित रूप से एक मुद्दा था;)


अपने नियंत्रक के रेजर व्यू को बनाने और संपादित करने से कोड को हटाएं / छुपाएं।

 @section Scripts {  

   @Scripts.Render("~/bundles/jqueryval")  
 }  

इसे इस्तेमाल करे:

@section Scripts 
{
    Scripts.Render("~/bundles/jqueryval")  // <- without ampersand at the begin
}

उपर्युक्त से एक छोटा कदम गायब था, जिसे मैंने एक और पोस्ट पर पाया। जोड़ने के बाद

<add namespace="System.Web.Optimization" />

अपने ~/Views/web.config नामस्थानों के लिए, दृश्य स्टूडियो को बंद करें और फिर से खोलें। यह काम करने के लिए मुझे यही करना था।


एमवीसी 3 से एमवीसी 4 तक एक परियोजना को अपग्रेड करते समय मुझे बहुत ही समान त्रुटि थी।

कंपाइलर त्रुटि संदेश: CS0103: नाम [blah] वर्तमान संदर्भ में मौजूद नहीं है

मेरे मामले में, मेरे पास कई वेब में संस्करण संख्याएं पुरानी थीं। कॉनफिग।

  1. मुझे System.Web.Mvc संस्करण संख्या को प्रत्येक वेब में "3.0.0.0" से "4.0.0.0" में अपडेट करने की आवश्यकता है। मेरे प्रोजेक्ट में कॉन्फ़िगर करें।
  2. मुझे अपने सभी सिस्टम.Web.WebPages, System.Web.Helpers, और System.Web.Razor संस्करण संख्याओं को "Web.0.0" से "2.0.0.0" तक प्रत्येक वेब में अपडेट करने की आवश्यकता है। मेरे प्रोजेक्ट में कॉन्फ़िगर करें।

उदाहरण के लिए:

<configSections>
  <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
    <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
    <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
  </sectionGroup>
</configSections>

...

<compilation debug="true" targetFramework="4.0">
  <assemblies>
    <add assembly="System.Web.Helpers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Web.WebPages, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  </assemblies>
</compilation>

अपने प्रत्येक दृश्य निर्देशिका में Web.Configs की समीक्षा करना सुनिश्चित करें।

आप एएसपी.नेट एमवीसी 3 प्रोजेक्ट को एएसपी.नेट एमवीसी 4 में अपग्रेड करने के बारे में और अधिक पढ़ सकते हैं।


जब मैं उस पृष्ठ पर प्रवेश करता हूं जो इस कोड को रोकता है:

@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
}

यह त्रुटि होती है: त्रुटि। आपका अनुरोध संसाधित करते समय एक त्रुटि हुई।

और यह अपवाद मेरे लॉग पर दर्ज किया गया है:

System.Web.HttpException (0x80004005): The controller for path '/bundles/jqueryval' was not found or does not implement IController.
   em System.Web.Mvc.DefaultControllerFactory.GetControllerInstance(RequestContext requestContext, Type controllerType)
...

मैंने इस पृष्ठ पर सभी युक्तियों का प्रयास किया है और उनमें से कोई भी मेरे लिए हल नहीं हुआ है। तो मैंने अपने पैकेज फ़ोल्डर को देखा है और देखा है कि मेरे पास System.Web.Optmization.dll के लिए दो संस्करण हैं:

  • Microsoft.AspNet.Web.Optimization.1.1.0 (v1.1.30515.0 - 68,7KB)
  • माइक्रोसॉफ्ट. Web.Optimization.1.0.0- बीटा (v1.0.0.0 - 304KB)

मेरी परियोजना पुराने बीटा संस्करण के संदर्भ में थी। मैंने केवल नए संस्करण (6 9 केबी) के संदर्भ को बदल दिया और eveything ठीक काम किया।

मुझे लगता है कि यह किसी की मदद कर सकता है।


जाहिर है आपने 'स्क्रिप्ट' फ़ोल्डर के बिना 'खाली' प्रोजेक्ट प्रकार बनाया है। मेरी सलाह - एक 'बेसिक' प्रोजेक्ट प्रकार को पूर्ण 'स्क्रिप्ट' फ़ोल्डर के साथ बनाएं।

सभी डेवलपर्स के संबंध में।


निम्नानुसार अपने रेज़र दृश्य के शीर्ष पर सिस्टम.Web.Optimization आयात करें:

@using System.Web.Optimization

बस लिखें

@section Scripts{
    <script src="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/bundles/jqueryval")"></script>
}

मुझे एक ही समस्या थी और मैंने इसे ट्रैक करने में मेरी सहायता के लिए WinMerge का उपयोग किया। लेकिन जैसा कि मैंने इसे और अधिक शोध किया, मैंने पाया कि रिक के लिए एकदम सही ब्लॉग पोस्ट है।

सारांश:

  • दोनों web.config फ़ाइलों में <add namespace="System.Web.Optimization"/>
  • Install-Package -IncludePrerelease Microsoft.AspNet.Web.Optimization
  • बंडलिंग कोड अपडेट करें
  • अद्यतन लेआउट फ़ाइल
  • अंतिम चरण 10 अन्य पुस्तकालयों को अद्यतन करना है। मैंने नहीं किया और यह ठीक काम किया। ऐसा लगता है कि आप इसे विलंब कर सकते हैं (जब तक कि मैंने उनमें से 1 या अधिक अपडेट नहीं किया हो)। :)

मेरे पास एक ऐसी परियोजना में एक क्षेत्र जोड़ा गया था जब मेरे पास कोई समस्या नहीं थी। इससे छुटकारा पाने के लिए बस रूट के साथ web.config की प्रतिलिपि बनाई गई है। दृश्य दृश्य फ़ोल्डर क्षेत्र के दृश्य फ़ोल्डर में और यह काम करना शुरू कर दिया।


मेरे लिए इस समस्या को हल किया, NuGet पैकेज प्रबंधक कंसोल में निम्नलिखित लिखें:

update-package microsoft.aspnet.mvc -reinstall

मैं इस समस्या में भाग गया, हालांकि आदेश चलाते समय:

Install-Package -IncludePrerelease Microsoft.AspNet.Web.Optimization 

मुझे गुप्त संदेश मिला (कॉफी के पहले कप से पहले एक महान पून प्यार करना चाहिए):

इंस्टॉल-पैकेज: निर्दिष्ट क्रिप्टोग्राफ़िक एल्गोरिदम इस प्लेटफॉर्म पर समर्थित नहीं है।

मैं इसे विंडोज एक्सपी एसपी 3 (पसंद से नहीं) पर चला रहा हूं और मुझे जो मिला वह था कि मुझे एएसपी.नेट फोरम पर उपयोगकर्ता आर्टनोब द्वारा पोस्ट किए गए निर्देशों का पालन करना पड़ा

  • कृपया Nuget को अनइंस्टॉल करें और इसे पुनः इंस्टॉल करने का प्रयास करें। यदि आप ऐसा करने में असमर्थ हैं, तो व्यवस्थापक के रूप में लॉगिन करें।
  • टूल्स => एक्सटेंशन मैनेजर => पर जाएं "Nuget पैकेज मैनेजर" => अनइंस्टॉल करें
  • "Nuget" => इंस्टॉल करके इसे फिर से इंस्टॉल करें।
  • यदि यह काम नहीं करता है, तो कृपया पिछले पोस्ट में उल्लेखित 1.7.x संस्करण स्थापित करने का प्रयास करें (इसका मतलब यह नहीं है कि, यदि आप ठीक काम करते हैं, तो आपको पिछले संस्करण का उपयोग करना होगा, हम इस बग की रिपोर्ट कर सकते हैं और प्राप्त कर सकते हैं नवीनतम संस्करण के लिए पैच)।

एक बार जब मैं इसे चला गया तो मैं वेब को अद्यतन करने के लिए कमांड लाइन चला सकता था। ऑप्टिमाइज़ेशन।

उम्मीद है कि यह किसी को खोदने से बचाता है।


मैं क्षेत्रों का उपयोग कर रहा हूं, और इस मुद्दे के खिलाफ अभी आया हूं, मैंने बस रूट वेब.कॉन्फिग से नाम वेबों को नाम वेब पर कॉपी किया है। विन्यास और अब यह काम करता है !!

    <add namespace="System.Web.Helpers" />
    <add namespace="System.Web.Mvc" />
    <add namespace="System.Web.Mvc.Ajax" />
    <add namespace="System.Web.Mvc.Html" />
    <add namespace="System.Web.Optimization" />        
    <add namespace="System.Web.Routing" />
    <add namespace="System.Web.WebPages" />

यहां कुंजी जोड़ने के लिए है

 <add namespace="System.Web.Optimization" /> 

दोनों web.config फ़ाइलों के लिए। मेरा परिदृश्य यह था कि मेरे पास System.Web.Optimization संदर्भ दोनों प्रोजेक्ट और मुख्य / रूट web.config में था लेकिन @Scripts अभी भी ठीक से काम नहीं कर रहा था। आपको इसे काम करने के लिए दृश्य web.config फ़ाइल में नेमस्पेस संदर्भ जोड़ने की आवश्यकता है।

अद्यतन करें:

एमवीसी 4 सिस्टम की रिहाई के बाद से। वेब। ऑप्टिमाइज़ेशन अब अप्रचलित है। यदि आप एक खाली समाधान से शुरू कर रहे हैं तो आपको निम्न nuget पैकेज स्थापित करने की आवश्यकता होगी:

Install-Package Microsoft.AspNet.Web.Optimization

आपको अभी भी अपनी वेब.कॉन्फिग फाइलों में System.Web.Optimization का संदर्भ देना होगा। अधिक जानकारी के लिए इस विषय को देखें:

MVC-3-convert-to-4 ऐप के लिए System.Web.Optimization के संदर्भ को कैसे जोड़ें

जैसा कि कई ने बताया, इस काम को करने के लिए उपरोक्त चरणों के बाद वीएस को पुनरारंभ करना आवश्यक हो सकता है।


@Styles और @Scripts System.Web.Optimization लाइब्रेरी द्वारा प्रदान किए गए 2 नए सहायक हैं। जैसा कि नाम से पता चलता है, वे क्रमशः सीएसएस और जावास्क्रिप्ट फ़ाइलों या संसाधनों को बंडल और कम करते हैं।

नेमस्पेस @using या तो @using निर्देश या web.config माध्यम से शामिल करने का प्रयास करें

http://ofps.oreilly.com/titles/9781449320317/ch_ClientOptimization.html#BundlingAndMinification

अद्यतन करें

माइक्रोसॉफ्ट ने माइक्रोसॉफ्ट.एस्पनेट.एब.ऑप्टिमाइजेशन नामक एक अलग पैकेज में बंडलिंग / मिलिफिकेशन को स्थानांतरित कर दिया है। आप nuget से असेंबली डाउनलोड कर सकते हैं।

यह post आपके लिए उपयोगी होगी।







razor