8

Tôi đang cố gắng để thêm một số tính chất mẫu vào JavaScript của tôi trong trang nội dung của tôi:Tại sao không có intellisense trong ASP.Net MVC 2.0 khi gán giá trị Model cho JavaScript?

$(document).ready(function() { 
    createPager(1, <%=Model.TotalPages %>); 
    createUnprocessedPager(1, <%=Model.TotalUnprocessedPages %>); 
}); 

Có ai biết nếu điều này là do thiết kế? Bạn không có ý định kết hợp các thuộc tính mô hình với JavaScript? Hay đây là một lỗi?

Điều này hoạt động như mong đợi. Tuy nhiên, tôi không có bất kỳ Intellisense nào trong các thẻ <% ... %> khi thực sự viết mã. Nếu tôi viết bất kỳ mã nào trong các thẻ <script> thì không có Intellisense. Nếu tôi đi trực tiếp dưới thẻ </script> và nhập <% Model.... %> thì bùng nổ, tôi có Intellisense một lần nữa.

UPDATE: 22/10/2010

Chỉ cần đọc Scott Guthrie's latest blog post và nó xuất hiện chức năng này là sắp ra sớm với việc phát hành sắp tới của ASP.Net MVC 3 (có thể cho phiên bản beta cũng):

Lưu ý: Visual Studio Code/Markup Intellisense và Colorization trong Tệp dao cạo chưa được kích hoạt với bản Beta vào đầu tháng này. Bạn sẽ thấy hiển thị điều này trong một vài tuần mặc dù - và nó sẽ hỗ trợ mã đầy đủ intellisense cho HTML, JavaScript, CSS và mã C#/VB trong các tệp Dao cạo.

+6

Điều này có thể không hữu ích lắm, nhưng ... nó hoạt động với tính năng chia sẻ lại;) – Necros

Trả lời

1

Bạn sẽ mất bạn Intellisense trong chế độ xem bên trong dấu ngoặc kép "" như thuộc tính.

<input type="text" value="<%= DateTime.Today.ToShortDateString() %>" /> 

hoặc nếu nó xuất hiện bên trong khối Javascript.

<script type="text/javascript"> 
    <%= DateTime.Today.ToShortDateString() %> 
    </script> 

Đó là quan điểm của tôi rằng có nên Intellisense trong những tình huống, vì vậy tôi sẽ nói đó là một lỗi và hy vọng bản cập nhật trong tương lai để Visual Studio sẽ giải quyết và giải quyết này.

5

Cũng không có làm nổi bật cú pháp nào. Không chắc chắn đó có phải là lỗi hay tính năng, nhưng AFAIK, kết hợp mã theo cách này không phải là một thực hành tốt. Nói chung javascript nội tuyến không phải là một thực hành tốt, nhưng nếu bạn đi với nó, kết hợp tính chất mô hình với nó, và sau đó quyết định trích xuất các tập lệnh vào một tập tin js riêng biệt, mã của bạn sẽ phá vỡ. Vì vậy, nó là khá phổ biến để cư các trường ẩn với những đặc tính mẫu của bạn và đọc chúng trong js của bạn với jQuery, ví dụ:

<input type="hidden" id="valTotalPages" value="<%=Model.TotalPages %>" /> 
<input type="hidden" id="valTotalUnprocessedPages" value="<%=Model.TotalUnprocessedPages %>" /> 

... 

// in js 
$(document).ready(function() { 
    createPager(1, $("#valTotalPages").val()); 
    createUnprocessedPager(1, $("#valTotalUnprocessedPages").val()); 
}); 

Vì vậy, thiếu làm nổi bật cú pháp và IntelliSense có thể là một lỗi, nhưng cũng có thể là một cách ngăn cản một số mẫu mã nhất định.

+2

Lưu ý: bạn vẫn sẽ mất sự intellisense khi bạn thực hiện 'value =" <% = Model.TotalPages%> "'. Điều này xảy ra bất cứ khi nào bạn quấn '<% %> 'trong dấu ngoặc kép. – Omar

+0

Bất kỳ cách nào xung quanh nó? Hoặc là nó là một trường hợp nhận được một plugin studio trực quan? – GenericTypeTea

+0

giới thiệu các lĩnh vực trích xuất ẩn không phải là một thực hành tốt. nó tăng kích thước trang. Tôi thà sống với không có Intellisense .vote xuống. –

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