Вещи, которые я не могу сделать в 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.