2012-01-26 29 views
7

Javascriptファイルの中に剃刀の構文を使用したいと思います。これはページにJavaScriptのインラインを含めずに可能ですか?Javascriptファイルでカミソリの構文を使用することはできますか?

+0

なぜあなたのjavascriptファイルにRazorを使用する必要がありますか?より具体的には達成する必要があるものは何ですか?私はそれを達成するより良い方法があると確信しています。 –

+0

[asp.net-mvc:jsファイルのrazor '@'シンボル]の複製可能性(http://stackoverflow.com/questions/7902213/asp-net-mvc-razor-symbol-in-js-file) – gdoron

+0

@DarinDimitrov:私は本当に私のajaxリクエストでUrl.Action()を使うだけでした。 – Tjaart

答えて

3

Razorエンジンはページに対してのみ実行され、含まれているJavaScriptファイルは実行されません。

javascriptファイルを提供する前にビューエンジンを実行するカスタムパーサーを作成することができます。これを行う試みは、非常に便利なオープンソースプロジェクトになると思います。

しかし、これらの変数が任意のDOM要素にセミナーリンクされていない場合、最も簡単な解決策は、ページ内(または含まれている部分ページ)とjavascript内の変数を宣言して初期化することです.jsファイル)は、これらの変数が定義されているかどうかに依存します。

ただし、必要な変数が論理的にDOM要素に関連付けられている場合は、data-*属性を使用してこれらを定義することをお勧めします。この方法で、javascriptをHTMLで消費することができます。あなたは自動的にはJavaScriptによって更新されるコンテンツ領域を持っている場合たとえば、(ここでは例として、jQueryのを使用して):

HTML:

<div data-auto-refresh="pathToContent" data-auto-refresh-milliseconds="1000"></div> 

Javascriptを:

$(function() { 
    $('[data-auto-refresh]').each(function() { 
    var self = $(this); 
    var url = self.data('auto-refresh'); 
    var interval = self.data('auto-refresh-milliseconds'); 
    // Code to handle refresh here ... 
    }); 
}); 
+0

+1 ...また、クエリ文字列内のJSファイルに必要な値を渡すこともできます。 –

2

あなたはyoutはCSHTMLファイルに隠しフィールドの値を設定することができ、その後、あなたのJavaScriptファイルにあなたが隠しフィールドにアクセスすることができ、よりを参照してください。

関連する問題