Вещи, которые я не могу сделать в ASP.NET MVC - PullRequest
11 голосов
/ 29 марта 2009

Есть ли некоторые вещи, которые я не могу сделать с ASP.NET MVC? Вещи, которые возможны только с ASP.NET WebForms, или чрезвычайно намного проще с WebForms?

Мы рассматриваем использование ASP.NET MVC для нового проекта. Но мне интересно, есть ли какие-то очевидные вещи, которые мы не сможем сделать с ASP.NET MVC по сравнению с WebForms или местами, где нам придется проводить много времени с ASP.NET MVC.

Ответы [ 6 ]

14 голосов
/ 29 марта 2009

Самым большим из них будет использование существующих сторонних элементов управления в вашей форме. Большинство встроенных элементов управления довольно легко воспроизводить, но если у вас есть сторонний элемент управления для домашних животных, вам может потребоваться разместить его на обычной (не MVC) странице aspx (к счастью, это поддерживается).

Аналогично, "веб-части"

Также - функция, в которой ASP.NET использует разные html для разных клиентов (мобильных и т. Д.), Становится ... разной; Вы не захотите делать это вручную, но на самом деле большинство клиентов теперь работают со стандартным html, поэтому в первую очередь это не проблема.

Некоторые вещи, такие как i18n через файлы resx, требуют дополнительной работы, чем в шаблоне vanilla MVC, но примеры есть в Интернете.

Одно очко ... MVC лицензируется только для MS / ASP.NET; так что одна вещь, которую вы не можете сделать (не нарушая условия, насколько я понимаю), это запустить его в моно / Apache - но IANAL.

Теперь рассмотрим то, что вы можете сделать с MVC, что вы не можете (или не очень) с ванилью:

  • маршруты вместо страниц
  • автоматическое разрешение ввода (аргументы действия)
  • правильный контроль HTML ...
  • ... включение jQuery и т. Д. Для простого AJAX
  • разделение интересов
  • проверяемость
  • IoC / DI
  • несколько вариантов шаблонов (не только aspx / ascx)

повторное разрешение ввода:

public ActionResult Show(string name, int? page, int? pageSize) {...}

выберет «name», «page» и «pageSize» для (любого) маршрута, строки запроса или формы - так что вам не придется тратить много времени на выбор значений запроса.

re шаблонов - aspx / ascx не единственные варианты шаблонов. Например, см. здесь ; или вы можете написать свой собственный, если хотите ... Представление не связано с элементами управления ASP.NET вообще .

2 голосов
/ 29 марта 2009

Проверка не так проста, как в WebForms. В Webforms вы можете добавить валидатор и просто установить свойство, которое включает проверку на стороне клиента. Вы можете локализовать сообщение об ошибке. Локализация работает на стороне клиента и на стороне сервера.

В MVC нет стандартной проверки клиентов, и вам необходимо найти способ локализовать сообщения об ошибках на стороне клиента.

Сама локализация другая. Ресурсы, очевидно, по умолчанию не существуют на странице, потому что нет страницы. Но есть хороший способ иметь ресурсы для просмотра.

Я еще не проверял, можно ли установить SSL-обязательный для каждой папки.

EDIT

История с MVC3 другая. Сейчас есть хорошая поддержка валидации.

Есть еще вещи, которые не реализованы в MVC. Самая большая проблема для меня - полная реализация обналичивания пончиков и частичного обналичивания. В MVC3 есть некоторые улучшения в этой области, но они еще не завершены. В любом случае, следите за обновлениями: команда MVC старается понять, что это то, над чем они должны работать.

1 голос
/ 29 марта 2009

Большим из них является Управление. Пользовательские элементы управления недоступны с ASP.NET MVC. Я даже зашел так далеко, что попробовал использовать такой код:

new Label().RenderControl(...ResponseStream...);

Без кубиков.

Конечно, как часть этого, нет необходимости в состоянии просмотра, так что его там нет.

Хотя серверные элементы управления работают.

0 голосов
/ 06 февраля 2010

ASP.NET Ajax не работает с ASP.NET MVC, поэтому нет UpdatePanel (из-за отсутствия обратной передачи). К счастью, есть встроенный ajax (Ajax.Form), который можно использовать для частичного обновления, не говоря уже о jQuery, который поставляется по умолчанию с шаблоном проекта Visual Studio.

0 голосов
/ 29 марта 2009

Как сказал Марк, сторонние инструменты и (серверные) веб-элементы управления не могут быть использованы. Поэтому быстрое объединение чего-либо путем перетаскивания нескольких элементов управления в форме (таких как сетка и элемент управления доступом к данным) больше не вариант.

Но с помощью генерации кода и т. Д. Вы все равно можете сделать что-то быстро. И у вас все еще есть вышеупомянутая опция, если вам нужно что-то быстрое.

0 голосов
/ 29 марта 2009

Я думаю, что в MVC отсутствует состояние просмотра. Вам придется отслеживать свое собственное состояние просмотра другим способом, чем встроенное состояние просмотра в не MVC-проектах.

EDIT: Согласно комментариям: « Избавление от ViewState является преимуществом, а не недостатком ». - Крейг

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...