Использует ли ASP.NET MVC обычные элементы управления? - PullRequest
5 голосов
/ 21 мая 2009

В ASP.NET MVC я использую «обычные» элементы управления из набора инструментов и назначаю им данные, как я делал с веб-формами? Могу ли я использовать сетку, например?

Спасибо.

РЕДАКТИРОВАТЬ: Ответ, кажется, нет. Так что вы используете? Есть ли в Visual Studio элементы управления перетаскиванием, например элементы веб-формы?

Ответы [ 7 ]

8 голосов
/ 21 мая 2009

По большей части использование MVC явно не является делом перетаскивания. Также нет уровня автоматического подключения элементов управления, связанных с данными. Цель в структуре MVC - дать более прямой контроль над разметкой. Есть несколько вспомогательных методов, которые можно использовать с элементами управления рендеринга. MVC - это совершенно другая модель разработки на стороне сервера. ПРИМЕЧАНИЕ: вы можете объединить ASP.Net с MVC в гибридный проект.

Я хотел бы предложить, чтобы вам было очень удобно с разметкой HMTL и с тем, как работает HTTP + HTML связь, чтобы добиться успеха в проекте MVC. Использование JavaScript также очень явно. MVC очень хорош в отношении разделения проблем от внутреннего и внешнего интерфейса в веб-приложениях. Это облегчает разработку и тестирование логики внутреннего интерфейса по сравнению с интерфейсным рендерингом. Это основа для веб-разработчиков (прежде всего, веб-приложения), а не среда для веб-интерфейса (на основе элементов управления ASP.Net).

3 голосов
/ 21 мая 2009

ASP.Net MVC ориентирован на создание собственного HTML с использованием ваших шаблонов просмотра. Вы не можете использовать элементы управления Webform в своих представлениях, и приложение может обрабатывать их так же, как в Webforms. Они могут отображаться правильно, но нет функции обратной передачи или концепции поддержания их состояния.

При этом вы можете интегрировать веб-формы ASP.Net и со своими страницами в стиле MVC. Вы всегда можете проверить классическое прохождение Hanselman с «гибридным» приложением asp.net: http://www.hanselman.com/blog/PlugInHybridsASPNETWebFormsAndASPMVCAndASPNETDynamicDataSideBySide.aspx

1 голос
/ 26 мая 2009

Ответ - Да и Нет. Предпочтительно Нет.

Это то, чего боится сообщество, агрессивное смешивание asp.net и MVC в неузнаваемый и излишне сложный клудж.

Для тех, кто смотрит на MVC, я бы предложил:

  • Цените чистый простой HTML. пустой из вашего набора инструментов: -)
  • Занимайтесь серфингом и учитесь кодировать элементы управления генерироваться так, как вам нужно к. Сильно типизированный, мощный HTML генераторы придут, но я бы предпочел они должны быть чистыми и не завернутыми в контроль, я хочу увидеть код.
  • старайтесь не смешивать asp.net и mvc ( заманчиво) но если вы не вынуждены чтобы считать это нет-нет

Итак, чтобы ответить на ваш вопрос, MVC все еще нов, MVC Contrib, MVC Futures и Html помощники доступны в рамках и во всем Интернете. Продолжайте заниматься серфингом и держите свою собственную библиотеку твиков, а затем публикуйте их, чтобы другие могли найти и улучшить их, и наоборот. MVC может стать тем изменением, которого ждали сообщества .net, давайте не будем возвращаться, чтобы перетаскивать его так быстро.

Удачи!

1 голос
/ 21 мая 2009

Я считаю, что вы можете использовать любой элемент управления, который не зависит от функции обратной передачи.

0 голосов
/ 21 мая 2009

Некоторые элементы управления из набора инструментов WebForms будут работать нормально (хотя я считаю, что GridView не является одним из них ...) в ASP.NET MVC. Ключ в том, что вы не можете использовать элементы управления, которые полагаются либо на

  • Постбэки (функция __doPostback() javascript) или
  • VIEWSTATE

Однако я не уверен, что вы действительно хотите использовать эти элементы управления. Одна из основных идей ASP.NET MVC - восстановить контроль над вашей HTML-разметкой - то, чего вы на самом деле не имеете с GridView. Если вы хотите использовать многоразовый макет сетки для представления данных, я рекомендую использовать PartialView или Extension Method для класса HtmlHelper, в зависимости от сложности ваших данных.

0 голосов
/ 21 мая 2009

Вы не можете напрямую использовать элементы управления WebForms в ASP.NET MVC.
Но вы можете обернуть любой элемент управления внутри помощника HTML.

Пример GridView:

public static class MvcGrid
    {
        public static string MyGrid(this HtmlHelper helper)
        {
            var grid = new GridView();
            var source = new[]
                             {
                                 "Foo",
                                 "Bar",
                             };
            grid.DataSource = source;
            grid.DataBind();
            var stringWriter = new StringWriter();
            var writer = new HtmlTextWriter(stringWriter);
            grid.RenderControl(writer);

            return stringWriter.ToString();
        }
    }

Но это не будет работать как WebForm GridView.
Это только для рендеринга HTML.

0 голосов
/ 21 мая 2009

Нет, любой элемент управления, который использует функцию JavaScript __doPostBack для запуска обратных передач, не будет работать. Также нет понятия ViewState в ASP.NET MVC, поэтому любой элемент управления, основанный на ViewState или ControlState, также не будет работать.

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

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