2011-07-06 63 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 –

相關問題