В чем разница между View и Page в Asp.net core 2? - PullRequest
0 голосов
/ 03 мая 2018

Я новичок в Asp.net core 2. Одна из новинок в Asp.net core 2 - это страницы. Но я не могу понять это

  1. В чем разница между страницей и просмотром?
  2. Каковы преимущества страниц по сравнению с просмотром?
  3. В каких случаях должна использоваться страница?
  4. Могу ли я использовать оба одновременно?

1 Ответ

0 голосов
/ 03 мая 2018

Действительно, ваш вопрос - в чем разница между Razor Page и традиционным MVC. Оба используют Razor. Страница Razor является автономной (своего рода). Он имеет программный код, похожий на веб-форму, поэтому технически у вас будет файл cshtml и cshtml.cs, последний из которых будет действовать как для вашего контроллера, так и для вашей модели. Принимая во внимание, что с традиционным MVC у вас есть отдельные FooController, FooViewModel и Foo.cshtml. Помимо некоторых незначительных функциональных отличий (таких как необходимость использовать «действия», основанные на соглашениях, такие как OnGetAsync, OnPostAsync и т. Д. Со страницами Razor), это в значительной степени так.

Главным преимуществом Razor Pages, на мой взгляд, является его замкнутость. Весь код, касающийся определенной части функциональности, по сути, находится в одном месте. Однако недостатком этого является то, что он может затруднить повторное использование кода или, по крайней мере, не так интуитивно понятен в некоторых местах. Лично я думаю, что четкое разделение обязанностей, предлагаемое MVC, является более идеальным подходом и также менее «волшебным». Одна из маркетинговых точек соприкосновения с Razor Pages - это глупо легко. Это может быть правдой, но благодаря своей «простоте» она абстрагируется от вещей, о которых веб-разработчики должны знать, и это может быть опасно. Если вы на самом деле не понимаете, как что-то работает, вы не узнаете, правильно ли вы все делаете.

Я предвзят, но если честно ответить «Когда следует использовать Razor Pages?», Я бы сказал, никогда. Мне не нравится смешивание обязанностей, все «волшебство» и т. Д. С момента их появления количество вопросов по ASP.NET Core здесь взлетело до небес, и большинство вопросов о Razor Pages касаются вещей, которые либо очевидны, либо находятся на наименее интуитивно понятнее с MVC. Тем не менее, если вы собираетесь использовать их, они лучше всего подходят для вещей типа CRUD - вещей, которые не обладают большой функциональностью и довольно просты и / или повторяются.

Наконец, да, вы можете свободно смешивать и сочетать Razor Pages и MVC. Однако, это следует отметить, потому что это не очевидно для всех: Razor Pages работают только как Razor Pages, когда используются как Razor Pages. Другими словами, если вы создаете представление с выделенным кодом (страница Razor), а затем используете это представление в качестве возврата от действия MVC, частичного и т. Д., Выделенный код фактически не используется, просто «просмотр» часть. На самом деле, чтобы быть более точным, он «используется», но только для того, чтобы предоставить модель для представления в общем смысле, поскольку представление использует Page в коде в качестве своей модели. Однако на самом деле это не будет «активным», в том смысле, что действия страницы не будут выполнены, вещи, скорее всего, не будут правильно инициализированы и т. Д.

...