如何让visual studio将cshtml文件识别为javascript

时间:2011-07-06 13:20:13

标签: javascript visual-studio-2010 dynamic-css

我正在编写一个css / js页面,其中包含一些动态部分。 要做到这一点,我使用的是包含css / js的cshtml文件 - 我正在使用mvc.net并从控制器操作中返回css。

问题是visual studio将此页面识别为html而不是javascript / css所以它不会给我javascript / css着色和IntelliSense。

我的问题:

  1. 是否有更好/更简单的方法在.net
  2. 中创建动态css / js
  3. 我如何让visual studio将cshtml页面识别为javascript。

4 个答案:

答案 0 :(得分:1)

我知道这是一个老帖......但是......

我所做的只是将脚本标记放在我们自己的.cshtml文件中的javascript文件中。 我创建了一个单独的控制器(JavascriptController.cs),并在该控制器上创建了一个删除脚本标记的过滤器。我在OnActionExecuting方法中设置了过滤器。只是做着

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

因此,您可以获得语法,无需使用RazorJS即可获得razor,并且可以在MVC应用程序中请求js文件,例如常规路由。您只需在编辑时将脚本标记保留在局部视图上。

所以你可以打电话给

/使用Javascript / {操作}

并且您将使用剃刀获取您的javascript文件,过滤器将删除脚本标记,以便您可以像普通脚本一样包含它。

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

答案 1 :(得分:0)

最好的解决方案是遵循不引人注目的javascript和不引人注目的样式,并将您的javascript放入.js文件中,将您的css放入.css文件,并在cshtml文件的标记中引用它们<script><link>代码。

e.g。

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

这是一种很好的做法,因为它可以使您的内容(标记)/样式/行为分开。

答案 2 :(得分:0)

<script><style>标记放在页面中并将动态js / css放在那里有什么问题,如果它是动态的,那么就无法缓存它所以这种方法将会没事的。 你可以写下面的东西:

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

和razor引擎会在将它发送到浏览器之前评估@ MyFunc(params)和@MyOtherFunc(params)

答案 3 :(得分:0)

对于JavaScript,您可以尝试使用RazorJS nuget包。但是在使用它时我们遇到了一些不一致的地方。

仍在尝试使用控制器/视图找到更好的方法,并且仍然能够使用智能感知并获得合适的着色。