Введите True/False в Умбрако
Мы хотим реализовать флажок [Тип: true/false] в DocumemtType в Umbraco.
Наша текущая потребность в проекте:
флажок, который решит, должно ли изображение быть ссылкой или всплывающим
Код идет по этому пути...
var child= @Model;
if(child.GetProperty("popUp").Value.ToString() == "1")
{
// true means image will act as popup
}
else
{
// false means image will act as link
}
Но проблема в том, что произошла ошибка "Невозможно выполнить привязку во время выполнения для пустой ссылки"
Я также пробовал код, как,
if (child.GetProperty("popup").Value.Equals("1"))
{
}
или же
if (child.GetProperty("popup").Value.ToString().Equals("1"))
{
}
но все еще не в состоянии получить это. Все предложения приветствуются.
4 ответа
Использовал приведенный ниже код, и он работал нормально для меня
var child= @Model;
if(@child.popUp)
{
// true means image will act as popup
}
else
{
// false means image will act as link
}
node.GetProperty("popUp") - это путь. Если ваше контрольное значение на самом деле является строкой, то ваша логика проверки будет выглядеть
if (node.GetProperty<string>("popUp") == "1"){}
Эффективно универсальный GetProperty - это то, что делает ваш код, но он обрабатывает нулевой регистр, возвращая default (string).
(Я никогда не использовал динамическую вещь, на случай, если там что-то пойдет не так, выполните типизированный var node = new Node(id);)
Поскольку вы недавно добавили свойство к типу документа, если каждый узел этого типа не был опубликован, свойство вернет значение null. Сначала вам нужно проверить, является ли свойство нулевым, а затем проверить, имеет ли оно значение true.
var popUp = child.GetProperty("popUp");
if (popUp != null && popUp.Value.Equals("1"))
{
// popup...
}
else
{
// link...
}
Использовать этот:
var child = @Model;
if(child.GetPropertyValue<bool>("popUp", false))
{
// true means image will act as popup
}
else
{
// false means image will act as link
}