DNN — поле пользовательской регистрационной формы не проверяется на обязательность после обновления

Я обновляю сайт DNN с версии 5.06.00 до версии 7.03.02. Я следовал рекомендованному пути обновления и устранил все недостатки с помощью пользовательских модулей. Регистрационная форма имеет настраиваемое логическое поле, для которого необходимо установить значение TRUE. Раньше это проверяло правильно перед обновлением, но теперь это не после обновления. Пользователь может отправить форму, не выбирая переключатель «ИСТИНА».

Настраиваемое поле отображается правильно. Также отображается необходимая звездочка. В DOM даже есть элемент сообщения об ошибке с правильным настраиваемым требуемым сообщением:

<span class='dnnFormMessage dnnFormError'>[required message]</span>

Однако по умолчанию для этого поля установлено значение «display:none», и оно никогда не отображается как встроенное, как другие элементы сообщения об ошибке.

Я не специалист по DNN и не создавал этот сайт. Я обновляю его для клиента и не знаю, как работают все эти настраиваемые поля. Я вижу, что настраиваемое поле включено в «Администратор»> «Настройки сайта»> «Настройки учетной записи пользователя»> «Настройки профиля». Я также вижу файл с именем «Profile.ascx.Portal-0.resx», который содержит основной текст настраиваемого поля, текст справки и обязательный текст. Он находится в DesktopModules\Admin\Security\App_LocalResources. Я не знаю, что еще мне нужно настроить или проверить, что будет отличаться от версии 5.6 до 7.3.

Спасибо за вашу помощь!


person monalisa717    schedule 25.01.2016    source источник


Ответы (3)


Похоже, вы проверили все требования, но вы не упомянули, установлен ли флажок, требующий действительного профиля для регистрации. Это?

Можете ли вы убедиться, что настраиваемое поле помечено как обязательное?

Возможно, вам стоит обновиться до текущей версии DNN 7, то есть 7.04.02.

Я бы порекомендовал сделать полную резервную копию сайта перед обновлением, так как это всегда правильный путь.

Файл .resx не повлияет на функциональность, только отображаемые тексты.

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

person Joe Craig    schedule 26.01.2016
comment
Спасибо. В поле установлен необходимый флажок. Да, у меня есть локальная версия сайта, где я вношу изменения. Сайт уже обновлен на тестовом и рабочем серверах, но клиент и я пропустили эту ошибку до тех пор, пока не было развернуто производство. Я добавил еще одно тестовое логическое поле, как вы предложили, и оно также не работает должным образом. Кроме того, я не получаю никаких ошибок JS в консоли, и я попытался отключить все ссылки JS на дополнительные скины на этой странице. - person monalisa717; 26.01.2016
comment
У меня есть еще один вопрос: как мне сообщить DNN, что это поле не только обязательно, но и вы должны выбрать ИСТИНА, чтобы оно было действительным? Может быть, требуемая ошибка не отображается, потому что по умолчанию для нее установлено значение FALSE, поэтому технически она содержит значение? Это не казалось проблемой в старой версии DNN, но, может быть, сейчас все по-другому? - person monalisa717; 26.01.2016
comment
Есть еще один флажок. В разделе «Администратор», «Настройки сайта», «Настройки учетной записи пользователя» найдите флажок «Требовать действительный профиль для регистрации» и обязательно установите его. - person Joe Craig; 27.01.2016
comment
Я обновился до 7.04.02, но это ничего не изменило. Требовать действующий профиль перед регистрацией установлен флажок. Еще пара интересных вещей по этому поводу: страница регистрации не работает, если вы не используете ?ctl=register' в URL-адресе. Я вижу некоторые документы об этом здесь, dnnsoftware.com/wiki/, но это не должно быть тем, что сделал предыдущий разработчик, потому что имя страницы - Регистрация, что на этой странице указано не делать, а на странице настроек сайта не указано выбирается для - person monalisa717; 02.02.2016
comment
настройка страницы регистрации. Кроме того, я вижу, что у DNN есть несколько настраиваемых переключателей. Когда вы нажимаете на кнопки, я вижу, что имя класса dnnRadiobutton-checked переключается на элементы span. Однако сам ввод не меняется. Ввод False по умолчанию остается отмеченным = 'checked' независимо от того, что вы переключаете. Это ожидаемое поведение? - person monalisa717; 02.02.2016

Это не идеальный ответ, но поскольку я не могу понять, что не так с DNN, я просто пишу некоторый пользовательский jQuery, чтобы найти проверенный элемент диапазона переключателя, а затем показать/скрыть это сообщение об ошибке на основе этого. Если с формой что-то не так, будет показано только это сообщение. Затем, если вы исправите это логическое значение, оно отобразит все остальные сообщения. Это не здорово, но на данный момент это лучше, чем ничего.

$(".dnnPrimaryAction").click(function (e) {
        var $checkedRadioSpan = $(".dnnRadiobutton-checked");
        var $checkedRadioInput = $checkedRadioSpan.prev();
        var $errorMessage = $checkedRadioInput.siblings(".dnnFormError");

        if($checkedRadioInput.val() === "False") {
            e.preventDefault();
            $errorMessage.show();
        }
        else {
            $errorMessage.hide();
            // continue on with other validation
        }       
});
person monalisa717    schedule 02.02.2016

У меня была точно такая же проблема. Похоже, что для первого элемента формы сообщение об ошибке не отображается, так как для него не хватает места.

После добавления заголовка (h2) над формой все заработало нормально.

Дополнительную информацию см. в разделе сообщение об ошибке средства проверки не отображается на форумах сообщества DNN.

person Michael Tobisch    schedule 01.04.2020