5

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

问题是 Visual Studio 将此页面识别为 html 而不是 javascript/css,因此它不会给我 javascript/css 着色和 IntelliSense。

我的问题:

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

4 回答 4

1

我知道这是一个旧帖子......但是......

我所做的只是将脚本标签放在我的 javascript 文件中它们自己的 .cshtml 文件中。我创建了一个单独的控制器 (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>
于 2014-01-21T20:56:12.877 回答
0

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

仍在尝试使用控制器/视图找到更好的方法来执行此操作,并且仍然能够使用智能感知并获得不错的着色。

于 2012-03-13T16:23:13.160 回答
0

在页面中放置<script><style>标记并将动态 js/css 放在那里有什么问题,最后如果它是动态的,则无法缓存它,所以这种方法会很好。您可以编写如下内容:

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

剃须刀引擎将评估 @MyFunc(params) 和 @MyOtherFunc(params) 在将其发送到浏览器之前

于 2011-07-06T13:29:55.587 回答
0

最好的解决方案是遵循不显眼的 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" />

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

于 2011-07-06T13:25:10.393 回答