我正在编写一个css / js页面,其中包含一些动态部分。 要做到这一点,我使用的是包含css / js的cshtml文件 - 我正在使用mvc.net并从控制器操作中返回css。
问题是visual studio将此页面识别为html而不是javascript / css所以它不会给我javascript / css着色和IntelliSense。
我的问题:
答案 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包。但是在使用它时我们遇到了一些不一致的地方。
仍在尝试使用控制器/视图找到更好的方法,并且仍然能够使用智能感知并获得合适的着色。