Как заставить Visual Studio распознавать файл cshtml как javascript - PullRequest
5 голосов
/ 06 июля 2011

Я пишу страницу CSS / JS, в которой есть некоторые динамические части. Для этого я использую файл cshtml, содержащий css / js - я использую mvc.net и возвращаю css из действия контроллера.

Проблема в том, что visual studio распознает эту страницу как html, а не как javascript / css, поэтому она не дает мне раскраски javascript / css и IntelliSense.

Мои вопросы:

  1. есть ли лучший / более простой способ создания динамических css / js в .net
  2. Как заставить Visual Studio распознавать страницу cshtml как javascript.

Ответы [ 4 ]

1 голос
/ 22 января 2014

Я знаю, что это старый пост ... но ...

Я просто поместил теги сценария вокруг моих файлов javascript в их собственный файл .cshtml. Я создал отдельный контроллер (JavascriptController.cs) и создал на этом контроллере фильтр, который удаляет теги сценария. Я установил фильтр в методе OnActionExecuting. просто делая

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

Таким образом, вы получаете синтаксис, бритву без использования RazorJS и можете запрашивать файлы js, как обычные маршруты в приложении MVC. Вам просто нужно сохранить теги сценария в частичном представлении при редактировании.

Так что вы можете позвонить

/ Javascript / {Действие}

и вы получите файл javascript с бритвой в нем, а фильтр удалит теги скрипта, чтобы вы могли включить его как обычный скрипт.

<script src="http://{host}/Javascript/{action}"></script>
0 голосов
/ 06 июля 2011

Что не так с размещением тегов <script> и <style> на странице и размещением там ваших динамических js / css, в конце концов, если они динамические, нет способа их кэшировать, поэтому этот подход будет нормальным. Вы можете написать что-то вроде ниже:

<script>
 function myFunction_@MyFunc(params)(obj) {  return obj.field + @MyOtherFunc(params); }
<script>

и механизм бритвы оценит @MyFunc (параметры) и @MyOtherFunc (параметры) перед отправкой в ​​браузер

0 голосов
/ 13 марта 2012

Для JavaScript вы можете попробовать пакет RazorJS nuget.Но мы столкнулись с некоторыми несоответствиями при его использовании.

Все еще пытаемся найти лучший способ сделать это, используя Controller / Views и все еще иметь возможность использовать intellisense и получать приличную окраску.

0 голосов
/ 06 июля 2011

Лучшее решение - следовать ненавязчивому javascript и ненавязчивому стилю и поместить ваш javascript в файл .js, поместить ваш css в файл .css и ссылаться на них в разметке в вашем файле cshtml с помощью <script> и<link> tag.

например,

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

Это хорошая практика, поскольку она разделяет ваш контент (разметку) / стили / поведение.

...