EDIT
は(ハッシュ)JavaScriptのオブジェクトに必要なローカライズされたリソースを書き込み、その後、あなたの動的に作成されたオブジェクトのルックアップのためにそれを使用することを検討してください。私はこれが翻訳のためにサーバーに戻るよりも良いと思う。これは、ビューデータを介して追加するのと似ていますが、もう少し柔軟性があります。 FWIWでは、コントローラの一部ではなく、ビューの一部であるローカリゼーションリソースを考えることができます。ビューで
:
<script type="text/javascript"
src='<%= Url.Content("~/Resources/Load?translate=Close,Open" %>'></script>
どのような出力が何かでしょう:引数なし
var local = {};
local.Close = "Close";
local.Open = "Open";
それは、出力全体の翻訳ハッシュをでしょう。引数を使用すると、ビューごとにカスタマイズすることができます。実は、私は限りJavaScriptコードを容器にローカライズされているように私のビューのうち、私のJavaScriptコードを維持する程度すぎfussedないよ
$(function(){
$('#button').click(function() {
$("<img src=... title='" + local.Close + "' />")
.appendTo("#someDiv")
.click(function() { ... });
});
});
:
その後、のようなあなたのJavaScriptファイルでそれを使用します。通常は、マスターページをタイトル、ヘッダー、メイン、およびスクリプトの4つのコンテンツ領域に設定します。タイトル、ヘッダー、メインはあなたが期待する場所に移動し、スクリプト領域は本文の下部に移動します。
JavaScriptのインクルード(viewusercontrolsを含む)をすべてスクリプトコンテナに入れました。ビュー固有のJavaScriptコードはインクルードの後に付いています。私は、必要に応じてリファクタリングしてコードをスクリプトに戻しました。私は、コントローラのメソッドを使用してスクリプトの照合を行うことを考えました。つまり、1つのリクエストを使用して複数のスクリプトをインクルードしていますが、まだそれを知りませんでした。
これは、読みやすくするためにJavaScriptコードを分けておく利点がありますが、必要に応じてモデルやビューデータをJavaScriptコードに簡単に挿入することもできます。JavaScriptが利用できない場合、あなたは、要素の任意のテキストを初期化するためにJavaScriptコードを使用している場合、あなたのサイトが恐ろしく低下します、
//keep all of your localised vars somewhere
var title = '{title_from_server}';
document.getElementById('someImage').title = title;
は覚えておいてください:
を「私はJavascriptをビューから分離することにしたいです。」 == "javascriptをあなたのマークから分離しておくことも良い習慣です。" <=そしてそれはなぜ<%= foo %>がうまくいかないのかという問題です。 –
Btw、なぜonclickハンドラをJS onloadに添付するのが望ましいですか? –
質問の「JSによって生成された」部分が欠落しました。この場合、私は、ビューにローカライズされたデータを書き、JavaScriptをローカルオブジェクトからロードすることを検討します。再書込みします。 – tvanfosson