2011-07-06 29 views
5

我写了一些动态部位在它的CSS/JS页面。 要做到这一点,我使用含CSS/JS一个CSHTML文件 - 我使用mvc.net并返回从控制器动作的CSS。如何获得Visual Studio来识别CSHTML文件,如JavaScript

麻烦的是视觉工作室承认此页面为html,而不是如JavaScript/CSS所以它并没有给我的JavaScript/CSS着色和智能感知。

我的问题:

  1. 有在.NET
  2. 创建动态CSS/JS的更好/更简单的方法我怎样才能Visual Studio来识别CSHTML页面的JavaScript。

回答

0

最好的解决办法是遵循不显眼的JavaScript和美观的造型,把你的JavaScript成.js文件,把你的CSS为.css文件,并用<script><link>标签引用它们的标记在CSHTML文件。

例如

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

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

+0

这会让你启用的默认情况下不 – vittore

+0

@vittore启用的.js和.css剃刀 - 我该如何启用JS剃须刀?那正是我正在寻找的。 @stuperUser - 我正在寻找创建动态的js,因为我在不同的场景中有很小的变化,所以我不想要一个静态的js文件。 – Daniel

+0

@Daniel,可以将数据添加到脚本用作标志/参数的标记中,以决定如何运行,而不是使用动态代码,如果需要测试的话。 – StuperUser

0

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

<script> 
function [email protected](params)(obj) { return obj.field + @MyOtherFunc(params); } 
<script> 

和剃刀引擎将其发送到浏览器

+0

这会将行为与标记混合并打破JavaScript的单元可测试性。 – StuperUser

+0

@StuperUser:主题首发问动态js,默认情况下这是imho – vittore

+0

它是动态的,但只有一些场景(2现在可能更多在未来),所以我正在寻找它缓存。 – Daniel

0

对于JavaScript,你可以尝试RazorJS NuGet包之前评估@MyFunc(PARAMS)和@MyOtherFunc(PARAMS)。但是在使用它时我们遇到了一些不一致的地方。

仍在试图寻找更好的方式来做到这一点使用控制器/浏览次数,仍然能够使用智能感知并获得体面的着色。

1

我知道这是一个古老的职位......但

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

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

所以,你得到的语法,你的剃须刀,而不必使用RazorJS,您可以要求在MVC应用程序的js文件就像定期航线。编辑时只需在部分视图上保留脚本标记。

所以,你可以调用

/使用Javascript/{}行动

,你会用你的剃须刀让你的JavaScript文件在里面,过滤器将删除脚本标签,所以你可以像包括它一个正常的脚本。

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

好方法:这篇博客文章更详细,虽然它有一些在评论部分解决的错误。 https://blog.mariusschulz.com/2013/07/07/generating-external-javascript-files-using-partial-razor-views?cachebreaker=635670317115705127#comment-20970 –

相关问题