Ответ 1
ИЗМЕНИТЬ
Рассмотрите возможность записи необходимых локализованных ресурсов на объект JavaScript (хэш), а затем используйте его для поиска ваших динамически создаваемых объектов. Я думаю, что это лучше, чем возвращение на сервер для переводов. Это похоже на добавление его через viewdata, но может быть немного более гибким. FWIW, я мог бы рассматривать ресурсы локализации как часть представления, а не часть контроллера.
В представлении:
<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 для просмотра. Я реорганизую общий код обратно в сценарии по мере необходимости. Я думал об использовании метода контроллера для сопоставления script включает, то есть включать несколько сценариев, используя один запрос, но еще не добрался до этого.
Это имеет то преимущество, что код JavaScript отличается от читаемости, но также позволяет легко вводить модель или просматривать данные в код JavaScript по мере необходимости.