Вещи, которые я не могу сделать в ASP.NET MVC
Есть ли какие-то вещи, которые я не могу сделать с ASP.NET MVC?
Вещи, которые возможны только с помощью ASP.NET WebForms,
или намного проще с WebForms?
Мы рассматриваем использование ASP.NET MVC для нового проекта.
Но мне интересно, есть ли некоторые очевидные вещи, которые мы не сможем сделать с ASP.NET MVC по сравнению с WebForms или местами, где нам придется потратить много времени на ASP.NET MVC.
Ответы
Ответ 1
Самый большой из них будет использовать существующие сторонние элементы управления в вашей форме. Большинство встроенных элементов управления довольно легко воспроизводить, но если у вас есть сторонний элемент управления для домашних животных, вам может потребоваться разместить это на обычной (не MVC) странице aspx (удача это поддерживается).
Аналогично, "веб-части"
Также - функция, в которой ASP.NET использует разные html для разных клиентов (мобильный и т.д.), становится... другим; вы не хотели бы этого делать вручную, но на самом деле большинство клиентов теперь работают со стандартным html, поэтому это в первую очередь проблема.
Некоторые вещи, такие как i18n через файлы resx, нуждаются в дополнительной работе, чем в шаблоне MVC vanilla, но образцы находятся в Интернете.
Один момент... MVC лицензируется только для MS/ASP.NET; поэтому одна вещь, которую вы не можете сделать (без нарушения условий, как я ее понимаю), - запустить ее в моно /Apache, но IANAL.
Теперь рассмотрим вещи, которые вы можете делать с MVC, что вы не можете (или жестко) с ванилью:
- маршруты вместо страниц
- автоматическое разрешение ввода (аргументы действия)
- правильный html-контроль...
- ... включение jQuery и т.д. для простого AJAX
- разделение проблем
- проверяемость
- IoC/DI
- несколько вариантов шаблонов (а не только aspx/ascx)
re разрешение ввода:
public ActionResult Show(string name, int? page, int? pageSize) {...}
выберет "имя", "страницу" и "pageSize" (любой) маршрут, строку запроса или форму - поэтому вам не нужно тратить много времени на выбор значений запроса.
re templates - aspx/ascx не являются единственными параметрами шаблонов. Например, см. здесь; или вы можете написать свой собственный, если хотите... Представление не привязано к элементам управления ASP.NET вообще.
Ответ 2
Проверка не так проста, как в WebForms. В Webforms вы можете добавить валидатор и просто установить свойство, которое позволяет проверять клиентов. Вы можете локализовать errormessage. Локализация работает с клиентами и серверами.
В MVC нет проверки на стороне клиента, и вам нужно найти способ локализовать errandessages клиентов.
Сама локализация отличается. Ressources, очевидно, по умолчанию не существует на страницу, потому что нет страницы. Но есть хороший способ иметь ресурсы для просмотра.
Я все еще не проверял, возможно ли установить SSL-обязательную для каждой папки.
ИЗМЕНИТЬ
История отличается от MVC3. Теперь есть хорошая поддержка проверки.
Есть еще вещи, которые не реализованы в MVC. Самая большая проблема для меня - полная реализация для наличных денег и частичной наличности. В этой области есть некоторое улучшение в MVC3, но оно все еще не завершено. Во всяком случае, следите за обновлениями: швы команд MVC должны знать, что это то, над чем они должны работать.
Ответ 3
Большой - это элементы управления. Элементы управления пользователями недоступны с помощью ASP.NET MVC. Я даже зашел так далеко, чтобы попробовать использовать такой код:
new Label().RenderControl(...ResponseStream...);
Нет кубиков.
Конечно, как часть этого, нет необходимости в состоянии представления, так что его там нет.
Управление сервером работает.
Ответ 4
Я думаю, что состояние просмотра в MVC отсутствует. Вам придется отслеживать собственное состояние просмотра каким-то другим способом, чем встроенное состояние представления в проектах без MVC.
EDIT:
Согласно комментариям: "Избавление от ViewState - преимущество, а не недостаток". - Крейг
Ответ 5
Как сказал Марк, сторонние инструменты и (серверные) webcontrols не могут использоваться. Таким образом, быстро ударяя что-то вместе, перетаскивая несколько элементов управления в форме (например, сетку и элемент управления доступом к данным), больше не является вариантом.
Но с когенерацией и т.д. вы все равно можете сделать что-то быстро. И у вас все еще есть вышеуказанный вариант, если вам нужно что-то быстрое.
Ответ 6
ASP.NET Ajax не работает с ASP.NET MVC, поэтому нет UpdatePanel (из-за отсутствия обратной передачи). К счастью, есть встроенный ajax (Ajax.Form), который можно использовать для выполнения частичных обновлений, не говоря уже о jQuery, который по умолчанию поставляется с шаблоном проекта Visual Studio.