Почему я не могу использовать серверные элементы управления в ASP.net MVC? - PullRequest
34 голосов
/ 27 января 2012

Я готовлюсь быть ответственным за руководство разработкой небольшого приложения ASP.net MVC.Я впервые создаю приложение MVC, поэтому я взволнован!

Я внимательно прочитал документацию и чувствую, что у меня есть общее представление о работе MVC.Однако, если я правильно понимаю, серверные элементы управления (например, GridView) не являются частью MVC.

Мой вопрос: почему?В моем магазине разработки я настолько привык к использованию элементов управления, как GridView и MS Chart Controls, что я почти в полной растерянности относительно разработки без них.Похоже, что начинать все сначала.

Почему серверные элементы управления недоступны?Как Microsoft ожидает, что я буду работать без них?Какие есть альтернативы?

Ответы [ 5 ]

61 голосов
/ 27 января 2012

Мой вопрос: почему?

Поскольку большинство из них зависят от таких вещей, как ViewState и модели Postback, которые являются частью классической модели WebForms и более не существуют в ASP.NETMVC.Эти серверные элементы управления полагаются на события, которые будут выполнять обратную передачу на сервер, сохраняя свое состояние в скрытых полях (ViewState).В ASP.NET MVC вы больше не работаете с такими событиями, как Button1_Click.В ASP.NET MVC вы работаете с моделью, контроллером и представлением.Контроллер отвечает за получение пользовательских запросов, запрос модели, преобразование результатов в модель представления и передачу этой модели представления в представление, в обязанности которого входит отображение его в некоторой форме.

В ASP.NET MVC естьявляются помощниками HTML, которые можно использовать для генерации фрагментов HTML многократного использования между представлениями.Вы можете взглянуть, например, на Telerik ASP.NET MVC suite таких помощников.Они называют их элементами управления, но они не имеют ничего общего с классическими элементами управления на стороне сервера WebForms.Они всего лишь помощники HTML.

В основном классические веб-формы - это утечка абстракции в Интернете.В то время, когда они разрабатывали эту платформу, Microsoft делала так, чтобы существующие навыки разработчиков Windows были доступны в сети, что набирало все больший импульс.Но так как сеть все еще была новой технологией, с которой большинство разработчиков еще не знакомы, они создали эту абстракцию, чтобы скрыть способ работы www.Эти разработчики привыкли перетаскивать элементы управления на своих Windows Forms, дважды щелкая кнопки, которые генерировали для них некоторый код, в который они помещали свою логику доступа к данным и так далее.Эта модель была перенесена на разработку веб-приложений благодаря WebForms.Протокол HTTP был успешно скрыт за этой абстракцией под названием WebForms.Например, вам не нужно знать ни HTML, ни Javascript, ни даже CSS, чтобы создать веб-сайт с использованием WebForms, что действительно здорово, потому что фреймворк абстрагирует все эти вещи для вас.К сожалению, делая это, вы не можете легко использовать всю мощь веб-технологий более низкого уровня, которые могут понадобиться некоторым людям при разработке веб-приложений.

Что ASP.NET MVC в основном удаляет эту дырявую абстракцию и приносит wwwдля разработчиков так, как это было задумано его создателями.ASP.NET MVC недостаточно развит по сравнению с классическими веб-формами, поэтому вы не можете ожидать, что найдете тот же диапазон доступных элементов управления и виджетов, но ситуация постепенно меняется.

Я бы рекомендовал вам начать с ASP.NET MVC:http://asp.net/mvc. Вперед, посмотрите видео, поиграйтесь с примерами и посмотрите, подходит ли вам ASP.NET MVC или нет.И, конечно же, если вы столкнулись с какой-то конкретной трудностью или вопросом, не стесняйтесь вернуться сюда и задать его.

9 голосов
/ 28 января 2012

Я настолько привык к использованию элементов управления, как GridView и MS Chart Controls, что я почти в полной растерянности относительно разработки без них. Кажется, почти как начать заново.

В этом случае, начиная с хорошо .

Я прошел подобное путешествие. Если прямой HTML вас пугает, попробуйте поработать с пространством имен System.Web.UI.HtmlControls. Это позволит вам получить доступ к стандартным элементам управления HTML, но у вас все равно будет возможность превратить их в серверные элементы управления, если вам нужно (либо указав атрибут runat="server", либо преобразовав их в эквивалентные элементы управления ASP.NET.

В дополнение к ответ Дарина есть еще одна проблема с ASP.NET: вы ограничены мнением Microsoft о сети. Что GridView ты любишь? Это порождает плохой HTML. Paging контролирует это обеспечивает? Еще хуже. Даже если вы очень мало знаете о соответствии HTML, вложенные таблицы должны дать вам простуду. В любом случае, всем, кто использует GridView, повезло, что устаревшая сеть, поддерживаемая Microsoft (и, в меньшей степени, Google и Mozilla), пришла с такой ужасной отправной точки.

Наконец, подведем итог: я предлагаю вам переписать свои страницы или разработать новые веб-приложения (как можно лучше), используя только HtmlControls. Вам, вероятно, придется изучить некоторый JavaScript / jQuery, и вам, возможно, придется погрузиться в мир AJAX, чтобы заставить ваши элементы управления работать так, как вы этого хотите.

Используйте это как трамплин в мир MVC. Вы не будете использовать те же технологии (и можете отказаться от большого количества JavaScript / jQuery), но это поможет вам изменить ваши взгляды на веб-разработку на гораздо меньшие и, возможно, более легкие для восприятия куски.

В конечном счете, как бы вы ни любили свои элементы управления ASP.NET, у вас будет гораздо большая степень свободы, и вы также будете разрабатывать веб-сайты, использующие новые технологии, которые обеспечат добавленная стоимость для ваших сайтов.

3 голосов
/ 27 января 2012

Это своего рода точка зрения MVC.Он убирает высокий уровень абстракции пользовательского интерфейса, который предоставляет серверный контроль, и оставляет вас с HTML и JavaScript.(Также добавлены некоторые действительно интересные функции привязки модели)

3 голосов
/ 27 января 2012

В основе этого лежит Model View Controller (MVC), который способствует разъединению. Идея состоит в том, что вы предоставляете вашему представлению (веб-странице) модель все данные, которые необходимо визуализировать. Элементы управления сервером тесно связаны. В MVC нет концепции состояния или «должно быть» в любом случае.

0 голосов
/ 07 апреля 2015

Я новичок в MVC и обнаружил, что использование Partial Views похоже на создание небольших, многократно используемых элементов пользовательского интерфейса, которые не вписываются в _Layout. Например, слайдеры, слайд-шоу, навигация, избранные разделы, хотя вы можете использовать @section для этого, и я считаю, что частичные представления более полезны. Эта концепция позволяет мне создавать многократно используемые библиотеки, которые я могу легко переключать и использовать в других проектах. Для меня это похоже на контроль, хотя есть споры как за, так и против этой аналогии.

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