Можем ли мы получить доступ к значению словаря Umbraco из JavaScript?Как мы можем получить доступ к значению словаря umbraco из Javascript
Как я использую Umbraco 6.0.5
Можем ли мы получить доступ к значению словаря Umbraco из JavaScript?Как мы можем получить доступ к значению словаря umbraco из Javascript
Как я использую Umbraco 6.0.5
То, что я сделал, это объявить переменную при помощи Javascript
<script type="text/javascript">
var UmbracoDicKeyValue = '<%= kraftvaerk.umbraco.Translations.translate("Umbraco_Dic_Key", lang) %>';
</script>
А для установки значения переменной lang со стороны сервера.
protected string lang = (!String.IsNullOrEmpty(umbraco.library.Session("lang")) ? umbraco.library.Session("lang") : "en-GB");
umbraco.library.setSession("lang", lang);
Теперь используйте переменную UmbracoDicKeyValue в javascript-коде.
Насколько я знаю, вы не можете сделать это из коробки - на самом деле не пробовал, хотя.
Я бы сначала создать простую службу отдыха в моем веб-сайте, который возвращает элемент словаря Umbraco с помощью параметра строки запроса в качестве значения псевдонима
var alias = HttpContext.Current.Request.QueryString["alias"]
if(alias != null)
{
var dictionaryItem = umbraco.GetDictionaryItem(alias)
...
}
Затем вызовите свой собственный веб-сервиса с помощью JavaScript для получения значения
Нет, вы не можете сделать это из коробки.
Мне пришлось сделать это несколько раз, и наилучшим образом я придумал, чтобы напечатать все словарные предметы как объект при загрузке страницы (в <head>
или что-то в этом роде). Проклятие только для текущего языка.
Так в источнике у вас есть
<script>
var dic = {"quantity":"Quantity","totalPrice":"Total price","securePayment":"Secure payment"};
</script>
А затем получить как
window.dic["quantity"]
Thumbs up для обеспечения лучшей идеи, чем я предложил. Это имеет большее значение, учитывая, как сопоставление от псевдонима к элементу, вероятно, будет выполняться много раз в каждом представлении, и в этих случаях лучше будет обеспечивать лучшую производительность. Предполагая, что ваш словарь не массивный: D – Scherling
Да, это даст намного лучшую производительность таким образом. Я на самом деле также кэширую этот список для каждого языка :) –