2012-06-06 2 views
81

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

Спасибо,

+0

Я не думаю, что видел файлы cshtml в любом месте на веб-сайте microsoft.com. – user34660

ответ

86

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

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

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

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

+9

+1 Это важный момент в отношении различия между целью ASP.NET Web Form по созданию среды с сохранением состояния для безгражданный веб. – smartcaveman

3

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

35

Бритва является вид двигателя для ASP.NET MVC, а также двигательшаблона. Код Razor и встроенный код ASP.NET (код, смешанный с разметкой), сначала скомпилируются, а затем запускаются во временную сборку. Таким образом, как и C# и 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> 

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

+0

Вы имели в виду @Human вместо @Model? –

+6

@ MikaëlMayer, в Razor, 'Model' используется для строго типизированных представлений, в которых вы определяете свой тип вверху, используя ключевое слово' model'. –

+0

Небольшой вопрос для вас @SaeedNeamati ...... Предположим, что мы создаем веб-приложение для использования сложного веб-приложения SOAP на основе микросервисов .... в этом случае asp.net mvc aspx или mvc cshtml лучше использовать. Я лично почувствовал облегчение синтаксиса cshtml. – codemilan

9

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

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

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

+0

Когда я начал писать это, Джоэл не редактировал его, но я оставлю его на случай, если кто-то найдет его полезным – smartcaveman