Здравствуйте.
Можно ли в asp.net mvc сделать user control, так, чтобы использовать его было легко и просто.
Требования к такому контролу следующие:
- Чтобы можно было легко использовать
- Чтобы можно было использовать в различных представлениях
- Чтобы данные для контрола можно было подставлять различные, определяемые контроллером, который отвечает за формирования представления-контейнера для этого контрола
- Чтобы контроллер, обрабатывающий post запрос для представления, в котором находиться контрол, мог получить полную модель данных от контрола, и при этом для него не приходилось создавать дополнительный входной параметр.
- Чтобы при выполнении пользователем действий с контролом пользователь возвращался на ту страницу, где находиться контрол.
Теперь какие мне видятся варианты решения этой задачи:
- Для построения контроллера нужно использовать класс-сервис для его логики и класс helper или связку Контроллер-Частичное представление для рендеринга.
- Для передачи инициирующих данных для контрола использовать отдельный класс-модель, который будет формироваться и инициализироваться в экшене представления, а в самом представлении модель будет передаваться Helper’у
- Для передачи данных из контрола обратно в экшн можно использовать метод Controller.UpdateModel<>()
- Для того, чтобы контрол выполнил некоторые действия (например проверку пользовательского ввода на стороне сервера) можно вызвать некоторый метод сервис-класса, отвечающего за логику, если нужно выполнить специфические для хост-контроллера действия, то можно передать в этот метод делегат на собственный метод или воспользоваться конструкцией Action<> (Func<>) + лямбда-выражением.
- Для возврата пользователя к странице, на которой он был ранее можно сохранить Url с контролом и потом перейти на него.
Вот как-то так. Наверное, есть какие-нибудь фреймворки для этого.
Если у вас есть опыт построения «правильный» контролов для asp.net mvc, поделитесь, пожалуйста.
Спасибо за внимание.