編輯
考慮編寫必要的本地化資源爲JavaScript對象(散),然後用它來查找你的動態創建的對象。我認爲這比回到服務器翻譯更好。這與通過viewdata添加它類似,但可能會更靈活一些。 FWIW,我可以將本地化資源視爲View的一部分,而不是控制器的一部分。
在查看:
<script type="text/javascript"
src='<%= Url.Content("~/Resources/Load?translate=Close,Open" %>'></script>
這將輸出類似:
var local = {};
local.Close = "Close";
local.Open = "Open";
沒有它會輸出整個翻譯哈希參數。使用參數可以讓您自定義每個視圖。
你會然後用它在你的JavaScript文件,如:
$(function(){
$('#button').click(function() {
$("<img src=... title='" + local.Close + "' />")
.appendTo("#someDiv")
.click(function() { ... });
});
});
其實,我不是太大驚小怪,只要JavaScript代碼是本地化讓我的JavaScript代碼了自己的看法在容器。通常我會將主頁設置爲4個內容區域:標題,標題,主要和腳本。標題,標題和主要內容放在您期望的位置,腳本區域位於內容的底部。
我把我所有的JavaScript包括,包括任何viewusercontrols,到腳本容器。包含特定於視圖的JavaScript代碼。我根據需要將共享代碼重構回腳本。我想過使用控制器方法來整理腳本包括,也就是說,包括多個腳本使用單個請求,但還沒有得到解決。
這樣做的好處是可以將JavaScript代碼分開以保持可讀性,還可以根據需要輕鬆地將模型或查看數據注入JavaScript代碼。
「我想JavaScript從視圖中分離出來。」 ==「還有一個很好的做法,讓你的JavaScript與你的標記分開。」 <=這就是爲什麼<%= foo %>不起作用的問題。 – 2009-07-06 13:03:49
順便說一句,爲什麼附加JS onload onclick處理程序是可取的? – 2009-07-06 13:05:56
我錯過了「由JS生成」部分的問題 - 剛剛掃描它。在這種情況下,我會考慮將本地化數據寫入視圖並讓JavaScript從本地對象中加載它。將重寫。 – tvanfosson 2009-07-06 13:35:38