2011-07-06 27 views
5

Tôi đang viết trang css/js có một số phần động trong đó. Để làm điều này tôi đang sử dụng một tập tin cshtml chứa css/js - tôi đang sử dụng mvc.net và trả về css từ một hành động điều khiển.Cách tải studio trực quan để nhận dạng tệp cshtml dưới dạng javascript

Sự cố là studio trực quan nhận dạng trang này dưới dạng html và không phải là javascript/css để nó không cung cấp cho tôi javascript/css màu và IntelliSense.

Câu hỏi của tôi:

  1. là có một/cách tốt hơn dễ dàng hơn của việc tạo ra năng động css/js trong .net
  2. Làm thế nào tôi có thể nhận được visual studio để nhận ra một trang cshtml như javascript.

Trả lời

0

Giải pháp tốt nhất là làm theo phong cách javascript và không phô trương không phô trương và đưa javascript của bạn vào một tập tin .js, đặt css của bạn vào một tập tin .css và tham khảo chúng trong đánh dấu trong tập tin cshtml của bạn với một thẻ <script><link>.

ví dụ:

<script src="Scripts/scriptName.js" type="text/javascript"></script> 
<link rel="stylesheet" href="Content/styleSheetname.css" type="text/css" /> 

Đây là thực tế tốt vì nó giữ nội dung của bạn (đánh dấu)/kiểu dáng/hành vi riêng biệt.

+0

điều này sẽ giúp bạn bật dao cạo cho .js và .css không được bật theo mặc định – vittore

+0

@vittore - Làm cách nào tôi có thể bật dao cạo cho js? đó là chính xác những gì tôi đang tìm kiếm. @stuperUser - tôi đang tìm cách tạo các js động như tôi có những thay đổi nhỏ trong các kịch bản khác nhau vì vậy tôi không muốn tệp js tĩnh. – Daniel

+0

@Daniel, có thể thêm dữ liệu vào đánh dấu được sử dụng bởi tập lệnh dưới dạng cờ/tham số để quyết định cách chạy thay vì có mã động, nếu cần phải kiểm tra. – StuperUser

0

Điều gì là sai khi đặt <script><style> thẻ vào một trang và đặt js/css động của bạn ở đó, cuối cùng nếu động là không có cách nào để lưu vào bộ nhớ đệm để cách tiếp cận này sẽ ổn. bạn có thể viết một cái gì đó như dưới đây:

<script> 
function [email protected](params)(obj) { return obj.field + @MyOtherFunc(params); } 
<script> 

và dao cạo engine sẽ đánh giá @MyFunc (params) và @MyOtherFunc (params) trước khi gửi nó đến trình duyệt

+0

Điều này kết hợp hành vi với đánh dấu và phá vỡ khả năng kiểm tra đơn vị của javascript. – StuperUser

+0

@StuperUser: chủ đề khởi động hỏi js động, mà imho theo mặc định làm điều này – vittore

+0

Đó là năng động nhưng chỉ với một vài kịch bản (2 ngay bây giờ có lẽ nhiều hơn trong tương lai) vì vậy tôi đã tìm cách để có nó lưu trữ. – Daniel

0

Đối với JavaScript bạn có thể thử các gói NuGet RazorJS. Nhưng chúng tôi đã gặp phải một số mâu thuẫn trong khi sử dụng nó.

Vẫn cố gắng tìm cách tốt hơn để thực hiện việc này bằng Bộ điều khiển/Chế độ xem và vẫn có thể sử dụng tính năng intellisense và nhận màu phong phú.

1

Tôi biết đây là một bài cũ ... nhưng ...

Những gì tôi đã làm được chỉ cần đặt các thẻ script xung quanh các file javascript của tôi trong tập tin .cshtml riêng của họ. Tôi tạo ra một bộ điều khiển riêng biệt (JavascriptController.cs), và tôi đã tạo một bộ lọc trên bộ điều khiển mà loại bỏ các thẻ script. Tôi đặt bộ lọc trong phương thức OnActionExecuting. bởi chỉ cần làm

this.Response.Filter = new ScriptFilter(Response.Filter, Response.ContentEncoding); 

Vì vậy, bạn sẽ có được cú pháp, bạn sẽ có được dao cạo mà không cần phải sử dụng RazorJS, và bạn có thể yêu cầu các tập tin js như các tuyến đường thường xuyên trong một ứng dụng MVC. Bạn chỉ cần giữ các thẻ script trên một phần xem trong khi chỉnh sửa.

Vì vậy, bạn có thể gọi

/Javascript/{Hành động}

và bạn sẽ có được file javascript của bạn với máy cạo râu của bạn trong nó, và bộ lọc sẽ loại bỏ các thẻ script để bạn có thể bao gồm nó như một kịch bản bình thường.

<script src="http://{host}/Javascript/{action}"></script> 
+0

Cách tiếp cận tốt: Bài đăng trên blog này đi vào chi tiết hơn, mặc dù nó có một số lỗi được giải quyết trong phần nhận xét. https://blog.mariusschulz.com/2013/07/07/generating-external-javascript-files-using-partial-razor-views?cachebreaker=635670317115705127#comment-20970 –

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