MVC 4 @Scripts“ ไม่มีอยู่”


201

ฉันเพิ่งสร้างโครงการ ASP.NET MVC 4 และใช้ Visual Studio 2012 RC เพื่อสร้างมุมมองคอนโทรลเลอร์และมุมมองมีดโกนสำหรับIndexและการCreateทำงาน

เมื่อฉันมาเพื่อเรียกใช้แอปพลิเคชันและเรียกดูไปยังCreateข้อผิดพลาดต่อไปนี้ก็ปรากฏขึ้น:

ข้อความแสดงข้อผิดพลาดของคอมไพเลอร์: CS0103: ชื่อ 'สคริปต์' ไม่มีอยู่ในบริบทปัจจุบัน

ปัญหาคือรหัสต่อไปนี้ซึ่งถูกเพิ่มโดยอัตโนมัติที่ด้านล่างของมุมมอง:

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

ทำไมสคริปต์ไม่มีอยู่?

ฉันดูที่คลาสเว็บเพจพื้นฐานในแอสเซมบลี System.Web.Mvc.dll, v4.0.0.0

ฉันสามารถดูคุณสมบัติผู้ช่วยต่อไปนี้ได้:

  • อาแจ็กซ์
  • html
  • url

แต่ไม่มีชื่อสคริปต์

ความคิดใด ๆ

แก้ไข:

ไฟล์ Web.config ของฉันมีลักษณะดังนี้ (ไม่ถูกแตะต้องจากไฟล์ Visual Studio ที่สร้างขึ้น):

  <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ช่วย:

แต่ฉันเพิ่งติดตั้ง Visual Studio 2012 RC ไปยังการติดตั้ง Windows 8 ใหม่ฉันยังคงไม่สามารถใช้งาน@Scriptsได้แม้ว่า Visual Studio จะเพิ่มเข้าไปในวิวที่สร้างขึ้น!

วิธีแก้ไขมีดังนี้

ฉันไม่แน่ใจว่าจะปิดสิ่งนี้ได้อย่างไรเนื่องจากในตอนท้ายการอัปเดตดูเหมือนจะแก้ไขปัญหาได้ ฉันตรวจสอบอีกครั้งฉันทำการติดตั้งใหม่ทั้งหมดโดยใช้โครงการใหม่ แต่โครงการความล้มเหลวเดียวกันฉันได้ทำงานได้ดีในขณะนี้หลังจากการปรับปรุงต่างๆและไม่มีการแทรกแซงด้วยตนเองชัดเจน ขอบคุณสำหรับความคิดทั้งหมด แต่มีปัญหาในเวลานั้น)


ลองเพิ่มใน Web.config แล้วหรือยัง <system.web.webPages.razor> <pages pageBaseType=""> <add namespace="System.Web.Mvc" /> <add namespace="System.Web.Mvc.Ajax" /> <add namespace="System.Web.Mvc.Html" /> etc... </pages>
Zach dev

ฉันได้เพิ่มหัวข้อจาก Web.config แต่ฉันไม่ได้เปลี่ยนแปลงอะไรในไฟล์นั้น
FantasticJamieBurns

6
คุณหมายถึงไฟล์ "My Views \ Web.config" ไม่ใช่รูทของแอป web.config ไม่ว่าจะในอัตราใดมันไม่ถูกต้องและไม่มี <add namespace = "System.Web.Optimization" /> คุณติดตั้ง VS12 Beta ก่อนหน้า RC หรือไม่ รุ่น win8 อะไร
RickAndMSFT

@RickAndMSFT ฉันทำการติดตั้ง Win8 ใหม่ทั้งหมดจาก Release Preview ISO พร้อมกับการติดตั้งจาก VS 2012 RC ISO เพื่อให้แน่ใจว่าไม่มีความขัดแย้งของเวอร์ชัน
FantasticJamieBurns

@RickAndMSFT มุมมองของฉัน \ Web.config จะพลาดมุมมองใด ๆ ในพื้นที่
Maslow

คำตอบ:


269

กุญแจสำคัญที่นี่คือการเพิ่ม

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

ถึงทั้งไฟล์ web.config สถานการณ์ของฉันคือฉันมีการอ้างอิง System.Web.Optimization ทั้งในโครงการและ main / root web.config แต่ @Scripts ยังทำงานไม่ถูกต้อง คุณต้องเพิ่มการอ้างอิงเนมสเปซไปยังไฟล์ Views web.config เพื่อให้ทำงานได้

UPDATE:

ตั้งแต่การเปิดตัว MVC 4 System.Web.Optimization นั้นล้าสมัยไปแล้ว หากคุณเริ่มต้นด้วยโซลูชันเปล่าคุณจะต้องติดตั้งแพ็คเกจ nuget ต่อไปนี้:

Install-Package Microsoft.AspNet.Web.Optimization

คุณจะต้องอ้างอิง System.Web.Optimization ในไฟล์ web.config ของคุณ สำหรับข้อมูลเพิ่มเติมดูหัวข้อนี้:

วิธีการเพิ่มการอ้างอิงถึง System.Web.Optimization สำหรับแอป MVC-3-modified-to-4

ดังที่หลายคนชี้ให้เห็นอาจจำเป็นต้องรีสตาร์ท VSหลังจากขั้นตอนด้านบนเพื่อให้สามารถใช้งานได้


8
คุณอาจต้องเรียกใช้Install-Package Microsoft.AspNet.Web.Optimizationจากเทมเพลต ASP.NET MVC4 ที่ว่างเปล่าเนื่องจากจะไม่รวมอยู่ในค่าเริ่มต้น
พอร์ตแมน

@Portman ใช่แน่นอนถ้าคุณเริ่มต้นด้วยเทมเพลตโครงการ MVC ที่ว่างเปล่าคุณต้องติดตั้งแพคเกจ Microsoft.AspNet.Web.Optimization
Marko

2
มันจะต้องเพิ่มใน web.config ในโฟลเดอร์ Views สำหรับฉันเท่านั้น
user1534664

9
นี่เป็นวิธีแก้ปัญหา อย่างไรก็ตามฉันจำเป็นต้องรีสตาร์ท Visual Studio เพื่อให้สิ่งนี้ได้รับการยอมรับ
Jason Eades

4
ฉันต้องเพิ่มสิ่งนี้ลงใน Views / Web.config แล้วเริ่ม Visual Studio ใหม่
Caverman

48

@Stylesและ@Scriptsเป็นผู้ช่วยใหม่ 2 คนที่System.Web.Optimizationห้องสมุดจัดไว้ให้ ตามชื่อแนะนำพวกมันจะรวมและย่อขนาดไฟล์ CSS และ JavaScript หรือทรัพยากรตามลำดับ

ลองรวม namespace System.Web.Optimizationด้วย@usingคำสั่งหรือผ่านweb.config

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

UPDATE

ไมโครซอฟท์ได้ย้าย bundling / minification Microsoft.AspNet.Web.Optimizationแพคเกจแยกต่างหากที่เรียกว่า คุณสามารถดาวน์โหลดการชุมนุมจากnuget

โพสต์นี้จะเป็นประโยชน์กับคุณ


2
การเพิ่ม System.Web.Optimization พูดว่า "CS0234: ประเภทหรือชื่อเนมสเปซ 'การปรับให้เหมาะสม' ไม่มีอยู่ในเนมสเปซ 'System.Web" ไม่มีการอ้างอิงที่เรียกว่า System.Web.Optimization เพื่อเพิ่มอย่างใดอย่างหนึ่ง
FantasticJamBurns

1
เนมสเปซ System.Web.Optimization ถูกทำให้ล้าสมัยตั้งแต่ตอบคำถามนี้ให้ลองใช้ Microsoft.AspNet.Web.Optimization แทน ดูคำถามนี้สำหรับข้อมูลเพิ่มเติม: stackoverflow.com/questions/9475893/…
Jeremy Jarrell

3
Clarification: System.Web.Optimizationเนมสเปซไม่ได้ถูกคัดค้านSystem.Web.Optimization.dllนั่นคือ
Despertar

ขอบคุณ! มันทำงานสำหรับฉันเมื่อฉันมีปัญหากับเลย์เอาต์ของ AREA ที่แตกต่างกัน
นักพัฒนา

48

มีขั้นตอนเล็ก ๆ น้อย ๆ หายไปจากด้านบนซึ่งฉันพบในโพสต์อื่น หลังจากเพิ่ม

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

ไปที่~/Views/web.configเนมสเปซของคุณปิดและเปิด Visual Studio อีกครั้ง นี่คือสิ่งที่ฉันต้องทำเพื่อให้ได้ผล


2
เหมือนกันที่นี่รีสตาร์ทของ VS ทำงาน แต่ก่อนหน้านั้นมันยังคงแสดงข้อผิดพลาด ... ?
Andreas

การปิด VS ไม่จำเป็นในกรณีของฉัน แต่ฉันต้องปิดและเปิดมุมมอง. cshtml ที่ฉันใช้อีกครั้ง
joalcego

29

ฉันกำลังใช้พื้นที่และเพิ่งเกิดปัญหานี้ขึ้นฉันเพิ่งคัดลอกเนมสเปซจากรูทเว็บไปยังเว็บพื้นที่ config และตอนนี้ใช้งานได้ !!

    <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" />

15

ฉันมีปัญหาเดียวกันและฉันใช้ WinMerge เพื่อช่วยฉันติดตามเรื่องนี้ แต่ที่ผมค้นคว้ามันมากขึ้นผมพบว่ามีริกที่สมบูรณ์แบบโพสต์บล็อกสำหรับมัน

สรุป:

  • เพิ่ม<add namespace="System.Web.Optimization"/>ไปยังไฟล์ web.config ทั้งสอง
  • วิ่ง Install-Package -IncludePrerelease Microsoft.AspNet.Web.Optimization
  • อัพเดตรหัสบันเดิล
  • อัปเดตไฟล์เค้าโครง
  • ขั้นตอนสุดท้ายคือการอัพเดท 10 ไลบรารีอื่น ๆ ฉันไม่ได้และมันก็ทำงานได้ดี ดังนั้นดูเหมือนว่าคุณสามารถผัดวันประกันพรุ่งคนนี้ (เว้นแต่ฉันจะอัปเดต 1 หรือมากกว่านั้น) :)

ขอบคุณที่ตอบด่านนี้! (และชี้ให้เห็นบล็อกของฉัน) คำถามของเขาบอกเป็นนัยว่าเขาเริ่มด้วย RC แต่ฉันคิดว่าคุณพูดถูก เขาเพิ่งเพิ่มคอนโทรลเลอร์ด้วย RC ในโครงการเบต้า
RickAndMSFT

สองสามสัปดาห์ที่ผ่านมาและคุณทั้งคู่ต่างก็คาดเดาตัวเองอย่างแน่นอน แน่นอนฉันใส่ VS 2012 ลงบนแท็บเล็ตซึ่งไม่เคยมีอะไรนอกจากเมโทรแอพและเห็นว่ามันล้มเหลว ฉันจะลองอีกครั้งใน VM
FantasticJamieBurns

สิ่งนี้ใช้ได้สำหรับฉัน อ่านบทความที่เชื่อมโยงสำหรับคำแนะนำที่ถูกต้องเกี่ยวกับสิ่งที่คุณต้องทำ
Justin

11

ฉันมีปัญหาเดียวกัน:

รุ่น System.Web.Optimization ที่ฉันใช้นั้นล้าสมัยแล้วสำหรับ MVC4 RC

ฉันอัพเดตแพคเกจของฉันโดยใช้ตัวจัดการแพ็คเกจใน VS 2010

ในบล็อก MSDNนี้Mr. Andy พูดถึงวิธีการอัพเดท MVC 4 Beta ของคุณเป็น MVC 4 RC การอัปเดตแพคเกจของฉันมีสคริปต์ (โดยเฉพาะอย่างยิ่งการเพิ่มประสิทธิภาพเว็บ) เพื่อแก้ไขสำหรับฉัน:

ในการติดตั้งแพคเกจ System.Web.Optimization ล่าสุดให้ใช้ Package Manager Console (เครื่องมือ -> Library Package Manager -> Console Manager Package) และเรียกใช้คำสั่งด้านล่าง:

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

ใช้ไฟล์ System.Web.Optimization ที่รวมอยู่ในแพ็คเกจในข้อมูลอ้างอิงของคุณ

ในการอัพเดตแพ็คเกจอื่น ๆ : เมนูเครื่องมือ -> Library Package Manager -> จัดการแพ็คเกจ NuGet สำหรับโซลูชัน


5

สร้างแอปพลิเคชั่นอินเทอร์เน็ต MVC 4 RC ใหม่และเปิดใช้งาน นำทางไปสู่การเข้าสู่ระบบซึ่งใช้รหัสเดียวกัน

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

สิ่งที่ช่วยให้ Login.cshtml ทำงานได้คือไฟล์ Views \ Web.config (ไม่ใช่เวอร์ชันรูทของแอป)

<namespaces>

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

  </namespaces>

เหตุใดมุมมองการสร้างของคุณจึงไม่ทำงานและการเข้าสู่ระบบคืออะไร


ฉันไม่ได้ใช้การเข้าสู่ระบบ - อาจเสียหายได้ในเวลานั้น
FantasticJamieBurns

5

นำเข้า System.Web.Optimization ด้านบนของมุมมองมีดโกนของคุณดังนี้:

@using System.Web.Optimization

3

ฉันพบปัญหานี้ในขณะที่ใช้งานคำสั่ง:

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

ฉันได้รับข้อความลับ (ต้องรักปุนที่ดีก่อนที่จะดื่มกาแฟครั้งแรก):

ติดตั้งแพ็คเกจ: อัลกอริทึมการเข้ารหัสลับที่ระบุไม่ได้รับการสนับสนุนบนแพลตฟอร์มนี้

ฉันใช้งานบน Windows XP SP3 (ไม่ใช่ตัวเลือก) และสิ่งที่ฉันพบคือฉันต้องทำตามคำแนะนำที่โพสต์โดยผู้ใช้artsnobบนฟอรัม ASP.NET

  • โปรดถอนการติดตั้ง Nuget แล้วลองติดตั้งใหม่ หากคุณไม่สามารถทำได้ให้ลงชื่อเข้าใช้ในฐานะผู้ดูแลระบบ
  • ไปที่เครื่องมือ => Extension Manager => เลือก "Nuget Package Manager" => UnInstall
  • ติดตั้งอีกครั้งโดยค้นหา "Nuget" => ติดตั้ง
  • ถ้ามันใช้งานไม่ได้โปรดลองติดตั้งรุ่น 1.7.x ตามที่ฉันพูดถึงในโพสต์ก่อนหน้า (ไม่ได้หมายความว่าคุณต้องใช้เวอร์ชันก่อนหน้าถ้ามันใช้งานได้ดีเราสามารถรายงานข้อผิดพลาดนี้และรับ โปรแกรมปรับปรุงสำหรับรุ่นล่าสุด)

เมื่อฉันทำสิ่งนี้ฉันก็สามารถเรียกใช้บรรทัดคำสั่งเพื่ออัปเดตการเพิ่มประสิทธิภาพของเว็บ

หวังว่านี่จะช่วยคนที่ขุดได้บ้าง


2

แค่เขียน

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

@archil ขอบคุณสำหรับการแทนที่ - นั่นจะเป็นทางออกชั่วคราวที่ดี แต่คำถามหลักคือ "ทำไมไม่มีสคริปต์อยู่"
FantasticJamieBurns

@Jamie มันควรจะอยู่? ฉันหมายถึงเท่าที่ฉันจำได้ว่าไม่มีผู้ช่วยสคิปต์อยู่ที่นั่น คุณอาจกำลังพยายามใช้ผู้ช่วยบุคคลที่สามอยู่หรือ
archil

1
ฉันไม่ได้เพิ่มรหัสนั้นเอง - Visual Studio 2012 RC เพิ่มเมื่อสร้าง View for Create Action ของฉัน ฉันคิดว่า MVC 4 ของฉันไม่ถูกต้อง ต้องทำงานที่ไหนสักแห่งเพราะ Scott Hanselman พูดถึงไวยากรณ์ที่ล้มเหลวว่าเป็นส่วนเสริมใหม่ของ MVC 4 RC: hanselman.com/blog/…
FantasticJamieBurns

1

ฉันอัปเกรดจาก Beta เป็น RC และประสบ 'สคริปต์' ไม่มีปัญหา ท่องไปทั่วทั้งเว็บและทางออกสุดท้ายคือสิ่งที่ N40JPJ พูดพร้อมกับวิธีแก้ปัญหาอื่น:

คัดลอกสิ่งต่อไปนี้ใน View \ Web.config:

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

และสิ่งต่อไปนี้ภายใน View \ Shared_Layout.cshtml

@if (IsSectionDefined("scripts")) 
{
       @RenderSection("scripts", required: false)
}

หวังว่ามันจะช่วย


1
ไม่จำเป็นต้องใช้if (IsSectionDefined())เว้นแต่คุณจะระบุelseข้อ ความจริงที่ว่าคุณกำลังพูดrequired: falseอยู่นั้นทำให้ไม่สามารถกำหนดส่วนนั้นได้และในกรณีนั้นส่วนนั้นจะถูกตัดออก ดังนั้นนี่คือรหัสพิเศษที่ไม่จำเป็น
ErikE

0

เห็นได้ชัดว่าคุณได้สร้างประเภทโครงการ 'ว่างเปล่า' โดยไม่มีโฟลเดอร์ 'สคริปต์' คำแนะนำของฉัน - สร้างประเภทโครงการ 'พื้นฐาน' ด้วยโฟลเดอร์ 'สคริปต์' แบบเต็ม

ด้วยความเคารพต่อนักพัฒนาทั้งหมด


0

เพียงแค่ลบ / ซ่อนรหัสจากการสร้าง & แก้ไขมุมมองมีดโกนของคอนโทรลเลอร์ของคุณ

 @section Scripts {  

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

0
  1. : ลบหน้าการดู
  2. : เพิ่ม namespace webconfig (ในไดเรกทอรีมุมมอง)
  3. : สร้างดูลอง!

โชคดี...


0

อีกครั้งสำหรับหม้อ - ใช้เวลานานพยายามที่จะแก้ไขปัญหาเดียวกัน - แม้ว่ามันจะถูกกำหนดใน web.config สำหรับ root และ root ของ Views ปรากฎว่าฉันเพิ่มมันผิดไป<system.web><pages><namespaces>และไม่ใช่<system.web**.webPages.razor**><pages><namespaces>องค์ประกอบนั้นโดยตั้งใจ

ง่ายมากที่จะพลาด!


0

เมื่อฉันเข้าสู่หน้าเว็บที่มีรหัสนี้:

@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)
  • Microsoft.Web.Optimization.1.0.0-beta (v1.0.0.0 - 304KB)

โครงการของฉันอ้างอิงถึงรุ่นเบต้าที่เก่ากว่า ฉันเปลี่ยนการอ้างอิงไปเป็นเวอร์ชั่นใหม่กว่า (69KB) และทุกอย่างทำงานได้ดี

ฉันคิดว่ามันอาจช่วยใครซักคน


0

นั่นมีทางออกที่ชัดเจน ฉันมีปัญหาเดียวกันในภายหลัง ไม่เกี่ยวข้องกับการอ้างอิงแอสเซมบลีหรือ ... มันจะเกิดขึ้นในการเรียกลำดับชั้นของมุมมอง MVC บางส่วนเมื่อคุณมีโครงสร้างหน้าที่ซับซ้อน ดังนั้นการโทร / แสดงผลแต่ละส่วนแยกกันในแต่ละหน้า (อาจเป็นหน้าต้นแบบหรือบางส่วน) จะทำให้ไม่เห็นส่วนที่ต้องการของหน้าเช่นรหัสต่อไปนี้:

@RenderSection("Scripts", required: false)

เพียงบังคับให้เพจค้นหาและแสดงส่วนที่เกี่ยวข้องและในกรณีที่ล้มเหลวจะแสดงข้อความแสดงข้อผิดพลาดเช่นคุณ

ดังนั้นฉันขอแนะนำให้คุณติดตามหน้าเว็บของคุณ (เช่นการติดตามโปรแกรม) จากต้นแบบไปยังทุกส่วนของหน้าเว็บเพื่อตรวจสอบการอ้างอิงตรวจสอบการอ้างอิงอาจจะเป็นงานที่น่ากลัว แต่ไม่มีตัวเลือกอื่นให้เลือก

ไม่ว่าตามประสบการณ์ของฉันสถานการณ์บางอย่างในการเขียนโปรแกรมทำให้ไม่แสดงให้คุณเห็นข้อผิดพลาดที่ถูกต้องทำให้เกิดปัญหา


0

ฉันมีปัญหานี้หลังจากที่ฉันเพิ่มพื้นที่ในโครงการที่ไม่มี ในการกำจัดมันเพียงแค่คัดลอก web.config ภายในโฟลเดอร์ Root Views ไปยังโฟลเดอร์ Views ของพื้นที่และมันก็เริ่มทำงาน


0

ฉันแก้ปัญหานี้ใน MvcMusicStore โดยเพิ่มส่วนของรหัสนี้ใน _Layout.cshtml

@if (IsSectionDefined("scripts")) 
{
       @RenderSection("scripts", required: false)
}

และลบรหัสนี้จาก Edit.cshtml

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

เรียกใช้โปรแกรม inshallah จะทำงานร่วมกับคุณ


0

สำหรับฉันแล้วการแก้ไขปัญหาในคอนโซลตัวจัดการแพคเกจของ NuGet เขียนดังต่อไปนี้:

update-package microsoft.aspnet.mvc -reinstall

0

เมื่อฉันเริ่มใช้ MVC4 เมื่อเร็ว ๆ นี้ฉันพบปัญหาข้างต้นในขณะที่สร้างโครงการด้วยเทมเพลตเปล่า ขั้นตอนในการแก้ไขปัญหา

  1. ไปที่TOOLS-> Library Package Manager-> Packager Manager Console วางคำสั่งด้านล่างแล้วกด Enter Install-Package Microsoft.AspNet.Web.Optimization หมายเหตุ: รอการติดตั้งสำเร็จ
  2. ไปที่ไฟล์ Web.Config ในระดับรากและเพิ่มด้านล่างเนมสเปซในส่วนเนมสเปซหน้า เพิ่ม<namespace="System.Web.Optimization" />
  3. ไปที่ Web.Config ในโฟลเดอร์ Views และทำตามขั้นตอนที่ 2
  4. สร้างโซลูชันและเรียกใช้

แพ็คเกจที่กล่าวถึงในขั้นตอนที่ 1 จะเพิ่มไลบรารีระบบจำนวนเล็กน้อยในการอ้างอิงโซลูชันเช่น System.Web.Optimization ไม่ใช่การอ้างอิงเริ่มต้นสำหรับเทมเพลตเปล่าใน MVC4

ฉันหวังว่านี่จะช่วยได้. ขอบคุณ


0

ฉันมีข้อผิดพลาดคล้ายกันมากเมื่ออัปเกรดโครงการจาก MVC3 เป็น MVC4

ข้อความแสดงข้อผิดพลาดของคอมไพเลอร์: CS0103: ชื่อ [blah] ไม่มีอยู่ในบริบทปัจจุบัน

ในกรณีของฉันฉันมีหมายเลขรุ่นล้าสมัยในหลาย ๆ เว็บของฉันกำหนดค่า

  1. ฉันต้องการอัปเดตหมายเลขรุ่น System.Web.Mvc จาก "3.0.0.0" เป็น "4.0.0.0" ในทุก ๆ Web.Config ในโครงการของฉัน
  2. ฉันต้องการอัปเดต System.Web.WebPages, System.Web.Helpers และ System.Web.Razor ทุกรุ่นจาก "1.0.0.0" เป็น "2.0.0.0" ในทุก ๆ Web.Config ในโครงการของฉัน

Ex:

<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 ในแต่ละไดเรกทอรี Views ของคุณ

คุณสามารถอ่านเพิ่มเติมเกี่ยวกับการอัพเกรดโครงการ ASP.NET MVC 3 ASP.NET MVC 4


0

หากคุณเพิ่มไปยัง web.config และยังคงแสดงข้อความคุณจะต้องปิดโครงการของคุณและเปิดใหม่อีกครั้งตอนนี้มันจะมีอยู่และ @ Styles.Render ("") และ @ Scripts.Render () จะทำงานได้ดี


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.