asp.net-mvc - сайт - передача данных из контроллера в представление




Каков наилучший способ реализации пользовательских элементов управления в ASP.NET MVC? (3)

Как и многие другие на этом сайте, я рассматриваю переход к ASP.NET MVC для будущих проектов. В настоящее время на моих сайтах работают традиционные веб-формы ASP.NET 2.0, и он работает нормально для нас, поэтому мой другой вариант - просто придерживаться того, что я знаю, и сделать переход на ASP.NET 3.5 с интегрированным материалом AJAX.

Мне интересно, как работают пользовательские элементы управления в ASP.NET MVC. У нас есть тонны .ASCX управления .ASCX и несколько составных элементов управления. Когда я работаю с веб-дизайнерами, очень просто заставить их эффективно использовать элементы управления ASCX, даже без каких-либо знаний о программировании, так что это определенный плюс. Но тогда, конечно, недостатки - это жизненный цикл страницы, который может быть безумным, и тот факт, что элементы управления ASCX трудно разделить между разными проектами. Комбинированные элементы управления имеют общий доступ, но в основном черный ящик для дизайнера.

Какова модель в ASP.NET MVC? Есть ли способ создать элементы управления, которые решают проблемы, с которыми мы столкнулись, используя ASCX и составные элементы управления? Важным соображением является разрешение доступа к веб-дизайнерам без необходимости беспокоиться о нарушении кода.


MVC имеет различный жизненный цикл страницы по сравнению с вашим пользовательским контролем.

Вы можете подумать об этом, чтобы переписать.

Aspx - это вид . Вы все еще нуждаетесь в повторной записи, синтаксис отличается. JavaScript будет работать. Но я вряд ли найду WebControls. Поскольку MVC больше не имеет viewstate и postback.

Для кода, стоящего за (aspx.cs), вам нужно преобразовать его в класс Controller . Метод Page_Load больше не будет работать. Вероятно, вы оставите его в методе Index() .

Модель - это просто классы сущностей, которые потребляют ваш код.

Вывод, это полная переписывание. Приветствия. Счастливое кодирование.


Да, вы можете сделать RenderPartial. Это хорошее начало. Но в конечном итоге этим ребятам понадобится логика и другие типы контроллеров. Будьте в поиске реализации субконтроллера из команды фреймворка. Также должно быть что-то в MvcContrib. Или сверните свой собственный.

Редактировать: я просто разместил об этом здесь: http://mhinze.com/subcontrollers-in-aspnet-mvc/


Чтобы реализовать пользовательский элемент управления, вы выполняете следующий вызов:

<% Html.RenderPartial("~/Views/Shared/MyControl.ascx", {data model object}) %>

Вы также можете увидеть старый синтаксис, который по состоянию на PR5 уже недействителен

<%= Html.RenderUserControl("~/Views/Shared/MyControl.ascx", {data model object}) %>

Вам всегда придется беспокоиться о нарушении кода при переходе из Web Forms в MVC, однако команда ASP.NET MVC проделала большую работу, чтобы свести к минимуму проблемы.





user-controls