ดูเหมือนว่ามีความไม่ตรงกันระหว่างไฟล์ View ที่ Visual Studio บางเวอร์ชันสร้างขึ้นโดยอัตโนมัติให้คุณเมื่อคุณใช้เพื่อสร้าง Model ใหม่ ฉันพบปัญหานี้โดยใช้VS 2013 Community Edition ใหม่และกำลังดำเนินการตามบทช่วยสอน W3Schools ที่http://www.w3schools.com/aspnet/mvc_app.aspแต่ความคิดเห็นด้านบนระบุว่าไม่ใช่ปัญหากับคำแนะนำการสอนหรือด้วย VS. เวอร์ชันเดียว
เป็นความจริงที่คุณสามารถทำให้ข้อความแสดงข้อผิดพลาดหายไปได้โดยเพียงแค่ลบไฟล์
@Scripts.Render("~/bundles/jqueryval")
บรรทัดจากสร้าง / แก้ไขเค้าโครงที่สร้างขึ้นโดยอัตโนมัติโดย Visual Studio
แต่วิธีแก้ปัญหานั้นไม่ได้กล่าวถึงสาเหตุที่แท้จริงหรือปล่อยให้คุณอยู่ในสถานที่ที่ดีที่จะทำมากกว่าการเดินผ่านบทช่วยสอน ในบางจุด (อาจค่อนข้างเร็ว) ในการพัฒนาแอปพลิเคชันจริงคุณจะต้องการเข้าถึงรหัสตรวจสอบ jquery ที่โซลูชันการแสดงความคิดเห็นลบออกจากแอปของคุณ
หากคุณใช้ VS เพื่อสร้างแบบจำลองใหม่ให้กับคุณระบบจะสร้างชุดของไฟล์ดูห้าไฟล์ ได้แก่ สร้างลบรายละเอียดแก้ไขและดัชนี สองมุมมองเหล่านี้สร้างและแก้ไขมีจุดมุ่งหมายเพื่อให้ผู้ใช้เพิ่ม / แก้ไขข้อมูลสำหรับฟิลด์ในบันทึกฐานข้อมูลที่รองรับโมเดล สำหรับมุมมองเหล่านั้นในแอปจริงคุณอาจต้องการตรวจสอบข้อมูลจำนวนหนึ่งโดยใช้ไลบรารีตรวจสอบความถูกต้องของ jquery ก่อนที่คุณจะบันทึกเรกคอร์ดในฐานข้อมูล นั่นคือเหตุผลที่ VS เพิ่มบรรทัดต่อไปนี้
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
ที่ด้านล่างของทั้งสองมุมมองไม่ใช่มุมมองอื่น ๆ โค้ดที่สร้างขึ้นโดยอัตโนมัติกำลังพยายามทำให้ไลบรารีการตรวจสอบพร้อมใช้งานสำหรับมุมมองเหล่านั้น แต่ไม่ใช่โค้ดอื่น ๆ
ข้อผิดพลาดเกิดขึ้นเนื่องจาก VS ไม่ได้เพิ่มบรรทัดที่เกี่ยวข้องลงในไฟล์ _Layout.cshtml ที่แชร์หรือดูคำตอบด้านบนเพิ่ม แต่ให้แสดงความคิดเห็นไว้ บรรทัดนี้คือ
@RenderSection("scripts", required: false)
หากมุมมองบางส่วนของคุณมีส่วนสคริปต์ (เช่นสร้างและแก้ไข) จะต้องมีคำสั่ง RenderSection ฝังอยู่ในเค้าโครง หากบางสคริปต์มีส่วนและบางส่วนไม่มี (เช่น Delete, Details และ Index ไม่มี) คำสั่ง RenderSection จะต้องมีrequired: false
พารามิเตอร์
ดังนั้นวิธีแก้ปัญหาที่ดีที่สุดหากคุณต้องการทำอะไรที่มากกว่าการทำตามบทช่วยสอนให้เสร็จสิ้นก็คือการเพิ่มคำสั่งลงใน _Layout.cshtml อย่าลบโค้ดออกจากมุมมองแก้ไขและสร้าง
ป.ล. มันเป็นเรื่องเล็กน้อยที่ทำให้สับสนที่นี่สิ่งที่จำเป็นต้องอยู่ใน 'บันเดิล' และคำสั่งที่ต้องการดูเหมือนว่ากำลังพยายามรวมไฟล์ไว้ในโฟลเดอร์บันเดิลที่ไม่มีอยู่ในโปรเจ็กต์ของคุณ แต่สำหรับการดีบักบิวด์และแบบฝึกหัดนั้นไม่เกี่ยวข้องเนื่องจากไฟล์ที่รวมเข้าด้วยกันจะรวมทีละไฟล์ ดู: http://www.asp.net/mvc/overview/performance/bundling-and-minificationรหัสที่เป็นปัญหานี้มีการกล่าวถึงสั้น ๆ เกี่ยวกับสองในสามของวิธีลงหน้า