Có vẻ như có sự không khớp giữa các tệp Xem mà một số phiên bản của Visual Studio tự động tạo cho bạn khi bạn sử dụng nó để tạo một Mô hình mới. Tôi đã gặp sự cố này khi sử dụng Phiên bản Cộng đồng VS 2013 mới và xem qua hướng dẫn của W3Schools tại http://www.w3schools.com/aspnet/mvc_app.asp nhưng các nhận xét ở trên cho thấy rằng đó không phải là vấn đề với các hướng dẫn hoặc với phiên bản duy nhất của VS.
Đúng là bạn có thể làm cho thông báo lỗi biến mất bằng cách xóa
@Scripts.Render("~/bundles/jqueryval")
từ các bố cục tạo / chỉnh sửa đã được Visual Studio tạo tự động.
Nhưng giải pháp đó không giải quyết được nguyên nhân gốc rễ hoặc giúp bạn không có cơ hội để làm nhiều việc hơn là hoàn thành hướng dẫn. Tại một số thời điểm (có thể là khá sớm) trong quá trình phát triển ứng dụng thực, bạn sẽ muốn truy cập vào mã xác thực jquery mà giải pháp đưa ra bình luận loại bỏ khỏi ứng dụng của bạn.
Nếu bạn sử dụng VS để tạo một mô hình mới cho bạn, nó cũng tạo một bộ năm tệp Chế độ xem: Tạo, Xóa, Chi tiết, Chỉnh sửa và Chỉ mục. Hai trong số các dạng xem này, Tạo và Chỉnh sửa nhằm cho phép người dùng thêm / sửa dữ liệu cho các trường trong bản ghi cơ sở dữ liệu làm nền tảng cho mô hình. Đối với những chế độ xem đó trong một ứng dụng thực, có thể bạn sẽ muốn thực hiện một số xác thực dữ liệu bằng cách sử dụng thư viện xác thực jquery trước khi lưu bản ghi trong db. Đó là lý do tại sao VS thêm các dòng sau
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
ở dưới cùng của hai chế độ xem đó và không phải những người khác. Mã được tạo tự động đang cố gắng cung cấp thư viện xác thực cho các chế độ xem đó, chứ không phải các chế độ xem khác.
Lỗi xảy ra vì VS không thêm một dòng tương ứng vào tệp _Layout.cshtml được chia sẻ hoặc, xem một câu trả lời ở trên, thêm câu trả lời nhưng bỏ qua nhận xét. Dòng này là
@RenderSection("scripts", required: false)
Nếu một số dạng xem của bạn có phần tập lệnh (như Tạo và Chỉnh sửa), thì phải có lệnh RenderSection được nhúng trong bố cục. Nếu một số tập lệnh có phần và một số không có (như Xóa, Chi tiết và Chỉ mục không có), lệnh RenderSection phải có required: false
tham số.
Vì vậy, giải pháp tốt nhất, nếu bạn muốn làm bất cứ điều gì khác ngoài việc hoàn thành hướng dẫn, là thêm câu lệnh vào _Layout.cshtml, không xóa mã khỏi chế độ xem Chỉnh sửa và Tạo.
PS Có một chút nhầm lẫn, ở đây, những gì đang được yêu cầu nằm trong một 'gói' và câu lệnh request có vẻ như nó đang cố gắng đưa một tệp vào một thư mục bó không tồn tại trong dự án của bạn. Tuy nhiên, đối với các bản dựng và hướng dẫn gỡ lỗi, điều đó không liên quan vì các tệp đi kèm được đưa vào từng tệp một. Hãy xem: http://www.asp.net/mvc/overview/performance/bundling-and-minification Đoạn mã đang được đề cập ở đây được đề cập ngắn gọn khoảng hai phần ba trang.