Как заставить форму Umbraco с проверкой работать правильно?
Я не смог найти ни одного туториала, в котором бы правильно и полно объяснялось, как сделать форму с валидацией.
В частности, у меня есть следующая проблема - при передаче ошибок заполненный пользователем контент теряется.
Я использую Umbraco v7, но я думаю, что концепция одинакова с 8 и 9?!
Опция 1
Как правило, то, что люди делают в учебниках, это то, что есть 1 действие
RenderForm
(получить), а затем еще
SubmitForm
(почта). Из того, что я получаю, если проверка не удалась, вы должны позвонить
CurrentUmbracoPage()
чтобы в основном перезагрузить страницу и включить эти данные. Вот тут-то и возникает проблема: рендеринг выполняется через действие, которое обычно выглядит так:
Html.RenderAction("RenderForm", "Contact", new ViewModel());
и, таким образом, он сбрасывает данные в новую пустую модель. У меня все еще есть ошибки, но все, что предварительно заполнил пользователь, теперь потеряно. Я предполагаю, что должен быть способ просто передать модель здесь, но я не мог узнать, как это сделать.
Вариант 2
Альтернативный способ работы с формами состоит в том, чтобы иметь только действие контроллера POST и загружать форму через партиал в:
Html.RenderPartial("~/Views/Partials/Forms/_ContactUsForm.cshtml", new ViewModel());
что приводит нас к той же проблеме - ошибки отображаются, но
ViewModel
данные пустые.
Я пытался вызвать его без модели, но он выдает ошибку. Я ожидаю, что вы сможете подготовить модель, а затем просто использовать ее в
.cshtml
или частичное
.cshmtml
но я не смог узнать как.
По
prepare model
Я имею в виду, что мне нужно установить кучу переменных, предварительно заполнить информацию, установить раскрывающиеся списки и т. д., прежде чем я отобразлю форму. Это должно быть сделано в контроллере как-то, прежде чем я загружу как пустую форму, так и заполненную форму с ошибками.
Мое исследование:
В официальной документации нет упоминания об ошибках:https://our.umbraco.com/Documentation/Fundamentals/Code/Creating-Forms/index-v7 .
Эти учебные пособия показывают вам, как создавать формы, но опять же, не показывают, как отображать данные, когда форма недействительна: