Подтвердить что ты не робот

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

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

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

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

Ответ 2

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

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

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

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

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

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

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

Ответ 3

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

Ответ 4

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

Ответ 5

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