Что, почему или когда лучше выбрать cshtml vs aspx?

Я хотел бы знать, что, почему или когда лучше выбрать cshtml и что, почему или когда лучше выбрать aspx-технологии? Для чего предназначены эти две технологии?

Спасибо,

Ответ 1

Как отвечали другие люди, .cshtml (или .vbhtml, если это ваш вкус) предоставляет обработчик-манипулятор для загрузки MVC-движка. Расширение .aspx просто загружает файл aspnet_isapi.dll, который выполняет компиляцию и обслуживает веб-формы. Разница в сопоставлении обработчиков - это просто метод, позволяющий двум сосуществовать на одном сервере, позволяя приложениям MVC и приложениям WebForms жить под общим корнем.

Это позволяет http://www.mydomain.com/MyMVCApplication быть действительным и обслуживаться с правилами MVC вместе с http://www.mydomain.com/MyWebFormsApplication для использования в качестве стандартной веб-формы.

Изменить:
Что касается разницы в технологиях, структура шаблонов MVC (Razor) предназначена для возврата .Net-страниц на более RESTful "веб-платформу" шаблонных шаблонов, разделяющих логику кода между моделью (бизнес/объекты данных), (что видит пользователь) и контроллеров (соединение между ними). Модель WebForms (aspx) была попыткой Microsoft использовать сложное встраивание javascript для имитации приложения с более высоким состоянием, аналогичного приложению WinForms, в комплекте с событиями и жизненным циклом страницы, которые могли бы сохранять свое собственное состояние со страницы на страницу.

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

Ответ 2

Razor - это механизм просмотра для ASP.NET MVC, а также механизм шаблона. Код Razor и встроенный код ASP.NET(код, смешанный с разметкой), сначала скомпилируются, а затем запускаются во временную сборку. Таким образом, как и С# и VB.NET, они скомпилируются в IL, что делает их взаимозаменяемыми, Razor и Inline-код являются взаимозаменяемыми.

Следовательно, это скорее вопрос стиля и интереса. Мне больше нравится бритва, а не встроенный код ASP.NET, то есть я предпочитаю страницы Razor (cshtml) на страницах .aspx.

Представьте, что вы хотите получить класс Human и сделать его. В файлах cshtml вы пишете:

<div>Name is @Model.Name</div>

В файлах aspx вы пишете:

<div>Name is <%= Human.Name %></div>

Как вы можете видеть, знак @ бритвы значительно упрощает микширование кода и разметки.

Ответ 3

Хотя синтаксис, безусловно, отличается между Razor (.cshtml/.vbhtml) и WebForms (.aspx/.ascx), (Razor является более кратким и современным из них), никто не упомянул об этом оба могут использоваться как механизмы просмотра/шаблоны, традиционные элементы управления ASP.NET Web Forms могут использоваться в любых файлах .aspx или .ascx(даже в единстве с архитектурой MVC).

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

Кроме того, представления веб-форм ASP.NET могут содержать файлы Code-Behind, которые позволяют внедрять логику в отдельный файл, который скомпилирован вместе с представлением. В то время как сообщество разработчиков программного обеспечения растет, увидев тесно связанные архитектуры и Smart Client, как плохую практику, это был основной способ делать вещи и по-прежнему очень что возможно с файлами .aspx/.ascx. Бритва намеренно не имеет такого качества.

Ответ 4

Файлы Cshtml - это те, которые используются Razor, и, как указано в ответе этот вопрос, их основное преимущество заключается в том, что они могут отображаться внутри модульных тестов. Различные ответы на эту другую тему приведут к множеству других интересных моментов.