Почему sitecore игнорирует значение по умолчанию 0 для целочисленного типа?

Я использую сайткор. Для проекта я создал шаблон с целочисленным полем простого типа. Это целочисленное поле имеет значение по умолчанию 0.

Когда я создаю новый элемент на основе этого шаблона, значение 0 (значение по умолчанию) не отображается. При изменении значения по умолчанию на 1 (например) оно отображается. Есть ли кто-нибудь, кто знает, как решить эту проблему?

Большое спасибо.

Джорди


person Jordy    schedule 21.03.2014    source источник


Ответы (3)


Sitecore НЕ игнорирует значение по умолчанию 0. Значение '0' ХРАНИТСЯ в Sitecore для поля Integer, оно просто не отображается в этом поле, так как это значение по умолчанию для типа int (или, возможно, long, потому что я знаю, что значение анализируется как long ).

Если вы переключитесь на отображение Raw values, значение будет отображаться.

И если вы получите доступ к этому значению поля из кода, вы получите 0.

person Marek Musielak    schedule 21.03.2014
comment
Я действительно вижу, когда я превращаю необработанные значения в значение 0, но это не очень удобно для редакторов контента. - person Jordy; 21.03.2014
comment
Согласен, это не интуитивно. Не знаю, почему это поле работает так. Может быть, ответ Ничто равно 0? Хотя только предположить... - person Marek Musielak; 21.03.2014

Это действительно странно.
Я могу воспроизвести это и с последней версией Sitecore 7.2.

Что я предлагаю вам связаться со службой поддержки Sitecore по поводу этой проблемы, потому что это может быть ошибка.

А пока просто используйте поле Number вместо Integer.
По какой-то причине оно работает правильно с этим типом поля.
Единственный побочный эффект заключается в том, что оно также будет принимать десятичные значения...

Вы можете решить эту проблему, добавив это регулярное выражение в поле Validation элемента поля: ^\d+$

введите здесь описание изображения

person Ruud van Falier    schedule 21.03.2014
comment
Я не знаком с Sitecore, но если он не использует синтаксис регулярных выражений, отличный от всего, что я видел, ^\d$ будет принимать только одну цифру. - person ; 21.03.2014
comment
Числовое поле не подходит, потому что редакторы контента могут ошибаться. Я нашел возможное решение для проверки однострочного текста с помощью регулярного выражения: ^(0|[1-9]\d*)$, но это не то, что я предпочитаю. - person Jordy; 21.03.2014
comment
Что вы подразумеваете под редакторами контента, которые могут ошибаться? Даже если вы используете целочисленное поле, значение сохраняется как текст в базе данных. Если вы добавите эту проверку регулярного выражения к числовому полю, у вас в основном будет то же поле, что и с целым числом. - person Ruud van Falier; 21.03.2014

Sitecore не игнорирует значение 0. Он просто не показывает его пользователю, но его значение будет храниться как 0 в базе данных, и если вы получите доступ к значению этого поля из кода, он даст вам 0 в качестве результата. Если вы хотите проверить, вы можете просмотреть dbbrowser, где он покажет значение как 0. Чтобы просмотреть dbbrowser, перейдите к

<URL Address>/sitecore/admin/login.aspx

войдите как sitecore\ <user id>

перейти к элементу и проверить значение поля

person Sachin B. R.    schedule 06.01.2015