2013-06-06 36 views
6

Khi tôi chạy mã của tôi, tôi nhận được rằng lỗi:Không thể nhận được giá trị của tài sản 'phô trương': đối tượng là null hoặc không xác định

Unable to get value of the property 'unobtrusive': object is null or undefined 

Nó sẽ là bình thường nhưng tôi thêm tất cả những thứ tôi jquery nhu cầu:

jquery.validate-vsdoc.js 
jquery.validate.js 
jquery.validate.min.js 
jquery.validate.unobtrusive.js 
jquery.validate.unobtrusive.min.js 
jquery.unobtrusive-ajax.js 
jquery.unobtrusive-ajax.min.js 

tôi tải này vào mẫu chính của tôi:

@Scripts.Render("~/bundles/jquery") 
@Scripts.Render("~/bundles/jqueryui") 
@Scripts.Render("~/bundles/jqueryval") 

Và bó cấu hình của tôi có:

bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
      "~/Scripts/jquery-{version}.js")); 

bundles.Add(new ScriptBundle("~/bundles/jqueryui").Include(
      "~/Scripts/jquery-ui-{version}.js")); 

bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
      "~/Scripts/jquery.unobtrusive*", 
      "~/Scripts/jquery.validate*")); 

Tôi có trong thư mục Script tất cả các tệp liên quan.

Tại sao tôi gặp phải lỗi này? Comment nếu bạn cần để xem bất kỳ tập tin và tôi sẽ sẵn sàng gửi nó

EDIT:

Các kịch bản được nạp (tôi đã kiểm tra) Dòng này cung cấp cho các lỗi:

jQuery.validator.unobtrusive.prototype.parse.call(this, selector); 

LỖI:

SCRIPT5007: Unable to get value of the property 'unobtrusive': object is null or undefined 
+0

Nếu bạn chắc chắn rằng tất cả các tệp đều có (ví dụ: "jquery.validate.unobtrusive.js"?), Bạn nên kiểm tra tất cả các tập lệnh bằng lệnh "grep" hoặc "Notepad ++" để tìm phần tử "không phô trương" . – Pragmateek

+0

Tôi đã thực hiện một gói cập nhật từ bảng điều khiển quản lý gói 2 phút trước, vì vậy chúng phải chính xác. – AAlferez

+0

Tôi đã kiểm tra và phần tử ở đó là – AAlferez

Trả lời

8

Tìm thấy vấn đề.

tôi đã có một cái nhìn một phần được bổ sung thêm một kịch bản "~/Scripts/jquery ..."

Vì vậy, tôi đã bó trong giao diện chính và điều này trong một phần của một thực đơn mà luôn render . Có vẻ như chỉ là người cuối cùng đang được xem xét và Unobtrusive không được thêm vào đó. Xóa khỏi chế độ xem một phần và chỉ để lại chế độ xem trong chế độ xem chính đã giải quyết.

Cảm ơn bạn đã đoán.

+1

Cảm ơn bạn rất nhiều. Tôi đã chiến đấu với vấn đề này trong hơn 5 giờ. – nishantvodoo

-1

Mã nào Junkie muốn nói là bạn đã thêm khóa kích hoạt javacript không phô trương trong web.config.

Bạn sẽ cần phải thêm này trong appSettings:

<appSettings> 
    <add key="ClientValidationEnabled" value="true" /> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true" /> 
</appSettings> 
+0

Tôi đã thêm nó, đó không phải là vấn đề – AAlferez

2

Tôi nhận được thông báo lỗi này vì một lý do khác, vì vậy tôi mặc dù tôi sẽ chia sẻ.

Chúng tôi sử dụng CDN của Microsoft để phục vụ tệp jquery.validate.min.js và khách hàng của chúng tôi đang sử dụng bộ lọc có asp.netcdn.com trên danh sách cấm ngăn không cho tải.

Vì vậy, việc đưa ứng dụng khách vào danh sách trắng CDN hoặc thay đổi CDN sẽ khắc phục được sự cố. Thực sự, chúng ta nên có một dự phòng tại chỗ để nó phục vụ một phiên bản địa phương nếu CDN không có sẵn nhưng chúng tôi chưa thực hiện điều đó.

3

Tôi có điều này cho một lý do khác, nhiều xương hơn. Tôi đã có jquery.validate.unobtrusive.js trước jquery.validate.min.js trong trang của tôi.

Chỉ cần di chuyển xác thực hợp lệ ở trên xác thực validate.unobtrusive đã khắc phục sự cố.

Các vấn đề liên quan