2sxc DNN - Как получить имя поля типа контента в cshtml?

Я работаю над приложением 2sxc, которое будет использоваться на нескольких языках. Есть много полей типа контента, которые имеют метки (имена) и значения (контент). Я знаю, как использовать многоязычные параметры для значений (контента), и это работает довольно хорошо. Мне интересно, есть ли способ получить перевод меток для полей типа контента в представлениях Razor. Есть возможность перевести эти имена с помощью бэкэнда 2sxc, но я не могу найти способ записать это в моих представлениях (файлы cshtml).


person BrankoSegedin    schedule 11.04.2018    source источник


Ответы (1)


Лучший способ сделать это - проверить Тип. Таким образом, в основном каждая сущность при использовании AsEntity(...).Type дает вам объект типа. Он имеет Атрибуты типа AttributeDefinition, который имеет Name - официальное название - и Метаданные.

Что вы хотите сделать, это выбрать атрибут правильного имени, а затем найти в метаданных элемент, который даст вам переведенное имя. Это немного сложно, но прямо.

Вот псевдокод:

function getTranslatedName(IEntity entity, string field)
{
  var attribs = entity.Attributes.First(a => a.Name == field);
  var basicMeta = attrib.Metadata
            .FirstOrDefault(d => d.Type.StaticName == "@All");
  return basicMeta?.GetBestValue("Name");
}
person iJungleBoy    schedule 19.04.2018