Реальный мир MVC - контакт с формами

Преобразование в HS (LVB), увеличение яркости и затем преобразование назад в RGB являются единственным способом надежно осветить цвет, не производя оттенок и степени насыщения (т.е. только осветить цвет, не изменяя его никаким другим способом).

9
задан Greg 16 September 2009 в 22:23
поделиться

8 ответов

I don't see why the error message for the newsletter box thats on every page, has to be rendered in the same page. If you have a page which posts to another action - completely unrelated to the current view (for example - search) then there is no reason for the error message to be shown in the original page. Would you show the success message on the same page? Where would that be handled?

Error messages for the newsletter form should be shown in a view dedicated to the newsletter. For example, see how its done in Stackoverflow - go into the search box and type nothing, simply hit enter. This is a kind of error since you did not specify what you want to search for. Stackoverflow will then take you to a different page that explains how search work.

Now why did it do that? The reason is simple - the user was on some page and chosen to engage in an activity that is not related to the current page, so there is no reason to keep them there.

6
ответ дан 4 December 2019 в 22:28
поделиться

Существует хороший учебник , ориентированный на ASP.net MVC, , в котором описаны методы включения виджетов (повторно используемых компонентов) в среду MVC.

Основная идея состоит в том, чтобы настроить виджеты с их собственным конвейером запросов, а не объединять их в комбинированный контроллер / представление, что нарушит ремонтопригодность MVC.

1
ответ дан 4 December 2019 в 22:28
поделиться

Добавьте в форму информационного бюллетеня поле, в котором хранится URL-адрес текущей страницы. Если во время отправки информационного бюллетеня возникает ошибка, получите URL-адрес и выполните перенаправление на эту страницу. Если вы поместите информацию об ошибке в правильное место, она должна быть получена формой информационного бюллетеня, которая, вы говорите, включена на каждую страницу.

1
ответ дан 4 December 2019 в 22:28
поделиться

Вы должны поместить сообщение об ошибке в какое-то глобальное место, где контроллер страницы ( который включает "субконтроллеры" информационный бюллетень ), можете получить его.

В случае использования AJAX, вы можете настроить связь контроллера информационного бюллетеня с DIV в что это видно (поскольку вы не перезагружаете всю страницу). Для этого вам понадобится фрагмент JavaScript на странице, который вызывается по завершении запроса AJAX, который берет строку и помещает ее в нужное место.

0
ответ дан 4 December 2019 в 22:28
поделиться

Мой опыт работы с MVC более практичен и менее "то, что говорится в книге", но вот что:

У вас был бы базовый класс контроллера (в CakePHP - это то, что я наиболее знакомый - он называется AppController ), который является подклассом всех остальных контроллеров. Этот класс будет реализовывать все «глобальные» вещи, о которых вы говорите.

Практический пример:

В моем классе AppController фреймворк определяет beforeFilter () обратный вызов, который выполняется по существу при каждой загрузке страницы. Здесь я проверю, была ли отправлена ​​форма регистрации, и обрабатываю ее должным образом. Если регистрация как-то напортачила, я

0
ответ дан 4 December 2019 в 22:28
поделиться

Для виджетов, которые должны возвращать некоторые ошибки проверки и т. д. - используйте частичные запросы (или субконтроллеры из MvcContrib) + AJAX.

0
ответ дан 4 December 2019 в 22:28
поделиться

What I do is have each form post to itself. In the controller, I check to see if the post variable is set; if so, I do validation. If the validation succeeds, I do a redirect to another page. If it fails, the form page just gets reloaded with error messages. This makes it easy and reduces code duplication. See here:

**in controller**:

If post variable is set:
    validate form

    if form is validated:
        redirect to new page (or whatever)
    else:
        add error messages to the $data variable of the view
    endif

endif

//$data contains whatever information you'd normally pass to the view.
//if there was a validation error, the messages are added to the $data variable
show view with $data variable

As you can see, the flow always falls through to the single view-loading statement. However, if validation succeeds, you are whisked away to another page.

0
ответ дан 4 December 2019 в 22:28
поделиться

How about adding a hidden field to the page submitting to the /newsletter/signup controller with the url of where to go after the controller is finished i.e. the current page (or you could use the referer http header).

This controller then adds a list of error messages or a success message to a list of objects to be rendered by the view before forwarding on to the controller specified by the hidden field above. This controller then adds it's list of objects to be displayed in the view (eg. list of widgets).

Then in the view, you can display the error messages from the newsletter controller if present.

0
ответ дан 4 December 2019 в 22:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: