Razbezhkin
@Razbezhkin
программист, преподаватель

Как делать User Control для Asp.Net MVC?

Здравствуйте.
Можно ли в asp.net mvc сделать user control, так, чтобы использовать его было легко и просто.
Требования к такому контролу следующие:
  • Чтобы можно было легко использовать
  • Чтобы можно было использовать в различных представлениях
  • Чтобы данные для контрола можно было подставлять различные, определяемые контроллером, который отвечает за формирования представления-контейнера для этого контрола
  • Чтобы контроллер, обрабатывающий post запрос для представления, в котором находиться контрол, мог получить полную модель данных от контрола, и при этом для него не приходилось создавать дополнительный входной параметр.
  • Чтобы при выполнении пользователем действий с контролом пользователь возвращался на ту страницу, где находиться контрол.



Теперь какие мне видятся варианты решения этой задачи:
  • Для построения контроллера нужно использовать класс-сервис для его логики и класс helper или связку Контроллер-Частичное представление для рендеринга.
  • Для передачи инициирующих данных для контрола использовать отдельный класс-модель, который будет формироваться и инициализироваться в экшене представления, а в самом представлении модель будет передаваться Helper’у
  • Для передачи данных из контрола обратно в экшн можно использовать метод Controller.UpdateModel<>()
  • Для того, чтобы контрол выполнил некоторые действия (например проверку пользовательского ввода на стороне сервера) можно вызвать некоторый метод сервис-класса, отвечающего за логику, если нужно выполнить специфические для хост-контроллера действия, то можно передать в этот метод делегат на собственный метод или воспользоваться конструкцией Action<> (Func<>) + лямбда-выражением.
  • Для возврата пользователя к странице, на которой он был ранее можно сохранить Url с контролом и потом перейти на него.



Вот как-то так. Наверное, есть какие-нибудь фреймворки для этого.
Если у вас есть опыт построения «правильный» контролов для asp.net mvc, поделитесь, пожалуйста.

Спасибо за внимание.
  • Вопрос задан
  • 2493 просмотра
Пригласить эксперта
Ответы на вопрос 1
ranquild
@ranquild
веб-разработчик
Используйте DisplayTemplates или EditorTemplates. Вроде бы это ближе всего к тому, о чем вы пишите.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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