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



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

问题是visual studio将此页面识别为html而不是javascript/css,因此它不会给我javascript/css着色和智能感知。

我的问题:

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

我知道这是一个老帖子…但是…

我所做的只是把脚本标签周围我的javascript文件在自己的。cshtml文件。我创建了一个单独的控制器(JavascriptController.cs),并在该控制器上创建了一个过滤器来删除脚本标签。我在onactionexecution方法中设置了过滤器。通过

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

所以你得到了语法,你不用使用RazorJS就得到了razor,你可以像在MVC应用程序中请求常规路由一样请求js文件。您只需要在编辑时将脚本标记保留在部分视图上。

你可以调用

/Javascript/{行动}

,你会得到你的javascript文件与剃刀在其中,过滤器将删除脚本标签,所以你可以包括它像一个正常的脚本。

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

<script><style>标签放在页面中并将动态js/css放在那里有什么问题,最后如果它是动态的,则没有办法缓存它,因此这种方法将是好的。你可以这样写:

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

和razor引擎将在发送到浏览器

之前计算@MyFunc(params)和@MyOtherFunc(params)

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

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

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

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

仍然试图找到一个更好的方法来做到这一点,使用控制器/视图,仍然能够使用智能感知和获得体面的着色。

最新更新