Преимущество перехода с ASP.NET на хлеб и масло HTML / jQuery - PullRequest
7 голосов
/ 02 апреля 2009

Мне все больше и больше надоели все причуды, связанные с контрольными идентификаторами, и я пытаюсь получить ваши данные на стороне сервера (на основе событий на стороне клиента). Кажется, я трачу больше времени на борьбу с элементами управления в asp.net, что, по-моему, отнимает у меня больше времени, чем я получаю, используя его.

Я думал об использовании простого html / javascript с jQuery и веб-сервисом, который возвращает json для данных.

Единственное, что, я думаю, мне не хватало бы в веб-формах - это MasterPages, управление сеансами, аутентификация на основе входа в Windows и, возможно, валидаторы (хотя у них тоже есть свои причуды). (На самом деле, может быть, не для сеансов и аутентификации, но я никогда не разрабатывал веб-сервисы)

  • Что-то не так с тем, как Я думаю об этом, или что-то, о чем я не думал?
  • Есть ли в asp.net вещи, которые вы думаете, я буду скучать?
  • Кто-нибудь делал это раньше и хочет поделиться опытом?

Пожалуйста, также обратите внимание, что у меня есть только Framework 2.0, доступный для разработки.


Редактировать: То, что вызывает у меня проблемы в asp.net, заставляет меня задуматься о переключателе:

Вот пример страницы, которая вызывает у меня проблемы.

Есть дерево таблицы (мастер / детали)

Вы можете редактировать поля в каждой дочерней строке.

Когда вы нажимаете кнопку сохранения, данные из строки группы должны обновляться (только данные из выбора, без изменений в базе данных), так как данные из дочернего ряда.

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

Мастер / детали генерируются с использованием повторителей

Попытка обновить запись из кода очень странная, и до сих пор не знаю, как обновить дисплей.

Используя jQuery и веб-сервис, я мог бы предположить, что я мог бы напрямую обновлять базу данных, запрашивать то, что я хочу отображать, и просто обновлять эту запись. Именно такие вещи заставляют меня задуматься, мешает ли мне asp.net.


 ________________________________________________________________________
| -  Some             Details           About            Group           |
|________________________________________________________________________|
    |¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|
    | ChildRecord Some  Editable  Fields       SaveButton   |
    | ChildRecord Some  Editable  Fields       SaveButton   |
    | ChildRecord Some  Editable  Fields       SaveButton   |
    | ChildRecord Some  Editable  Fields       SaveButton   |
    |_______________________________________________________|
 ________________________________________________________________________
| +  Some             Details           About            Group           |
|________________________________________________________________________|
 ________________________________________________________________________
| +  Some             Details           About            Group           |
|________________________________________________________________________|


Edit2: У меня проблема с ASP.NET не связана с ajax. Да, я использую jQuery, чтобы сделать интерфейсы более динамичными, например, показывать / скрывать раздел поиска, когда он не нужен, и сворачивать детали из дерева, но это все, что я делаю с ним.

Что меня беспокоит, так это то, что если я хочу проверить, какая кнопка была нажата в этом примере, я должен использовать некоторые трюки, которые кажутся немного странными.

Если вы хотите использовать комбинированные списки с привязкой к данным в ретрансляторе, вы должны использовать codebehind для установки выбранного значения, будет затруднительно получить выбранные данные.

Далее, если вы хотите проверить, какие данные были изменены, вы должны сохранить данные в состоянии просмотра, прочитать данные со всех элементов управления в ретрансляторе, а затем сравнить их с данными для обновления. Это то, что беспокоит меня с asp.net.

Ответы [ 5 ]

5 голосов
/ 02 апреля 2009

При правильном использовании веб-приложения ASP.NET и JavaScript / jQuery действительно могут дополнять друг друга. Сейчас я реализовал jQuery в 3 различных веб-приложениях и мне нравится каждая минута этого. Пока вы используете каждый компонент в полную силу, вы в конечном итоге будете довольны проектом.

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

JavaScript

document.getElementById("<%=this.MyObject.ClientID %>");

JQuery

$("#<%=this.MyObject.ClientID %>")....

В вашем примере отношений родитель-потомок вы можете очень легко справиться с тем, что вы обсуждаете с ASP.NET и инфраструктурой AJAX с UpdatePanels.

4 голосов
/ 02 апреля 2009

Вам не нужно отказываться от всего, как MasterPages. Вы можете попытаться отключить ViewState, отключить EventValidation и использовать как можно меньше элементов управления ASP.NET (в основном - если некоторые функциональные возможности могут быть легко достигнуты с помощью XHTML, напишите его как XHTML). Вы по-прежнему можете использовать элементы управления ASP.NET там, где они вам нужны.

Я думаю, что вы не одиноки. После двух лет работы с WebForms я также устал от них, и после того, как я обнаружил, насколько замечательным был jQuery и насколько хорошо он работал с веб-сервисами, я значительно изменил свою модель разработки. Сейчас я медленно продвигаюсь к MVC, так как считаю его идеальным решением, но для некоторых других приложений (небольших и / или предназначенных для 2.0) я просто пытаюсь использовать меньше серверных элементов управления, избавиться от ViewState, использовать больше AJAX (веб-сервисы) ). Работает нормально. Я бы порекомендовал Dave Ward's Encosia - начните с этой статьи . Я признаю, что это открыло мне глаза на некоторые другие способы разработки веб-приложений с использованием .NET Framework. Удачи!

3 голосов
/ 02 апреля 2009

Я думаю, что основной вопрос, который нужно задать себе:

Am I using the controls for what they've been designed to do?

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

Edit:

Ваши проблемы звучат так, как будто вы пытаетесь реализовать методы AJAX, однако в своем вопросе вы не упомянули об использовании AJAX framework . Посмотрите на это, так как оно может заполнить вашу нишу.

1 голос
/ 02 апреля 2009

Это может быть смена парадигмы, но если вы ищете больше «хлеба с маслом» и вам удобно работать без серверного управления asp.net, Монорельс может быть просто хорошим вариантом для вас. Он позволяет вам то, что вы ищете, и в то же время намного легче, а также архитектуру на основе MVC. Я бы порекомендовал asp.net mvc, если бы не ваше ограничение .net 2.0. Поскольку вы ограничены, Монорельс может быть просто жизнеспособным выбором.

1 голос
/ 02 апреля 2009

Создание таблицы в JavaScript / JQuery также не самый элегантный код. Так что я бы пропустил управление повторителем.

Кроме того, существуют обходные пути для проблемы ClientId.

На моей странице много кода, который выглядит следующим образом:

var myTextBoxId = '<% = MyTextBox.ClientID%>';

Если есть несколько элементов управления, мне нужен идентификатор клиента, потому что я помещу их в объект

var myControlIds = {MyTextBoxID: '<% = MyTextBox.ClientID%>'};

Другой способ - добавить определенные классы CSS к вашим элементам управления или имени / значению пользовательского атрибута.

Таким образом, ваше текстовое поле может быть:

И мой последний трюк - использовать искатель атрибута «Заканчивается на».

Так что ваш JQuery вместо

$ ("# MyTextBox") // не работает из-за неправильной идентификации идентификатора клиента

вместо: $ ("[id $ = MyTextBox]")

При этом выполняется поиск атрибута 'id' всех элементов управления, чтобы найти элемент со значением, заканчивающимся на "MyTextBox"

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