Возможно ли заставить элементы управления вводом ASP.NET действовать как базовая форма HTML? - PullRequest
1 голос
/ 11 августа 2009

ASP.NET имеет ряд полезных функций, касающихся создания страниц ввода данных:

  • Добавление элементов управления вводом легко (<asp: ...).
  • Система автоматически генерирует переменную-член для элементов управления.
  • Постбэк автоматически заполняет переменную members возвращаемыми значениями.

и некоторые не очень хорошие биты

  • Постбэк, похоже, привязан к JavaScript даже в самых простых случаях. Например, для статически определенных страниц, использующих только основные элементы управления, которые известны во время компиляции.

Мои вопросы:

  • Можно ли получить первый список без второго?
  • Какие функции этот JavaScript дает пользователю?
  • Что на самом деле делает этот JavaScript?
  • По каким техническим причинам он используется даже в тривиальных случаях?

Как оказалось, мои предположения были ошибочными: см. здесь

Ответы [ 3 ]

1 голос
/ 11 августа 2009

Вот что пришло мне в голову:

Какие функции этот JavaScript дает пользователю?

Проверка на стороне клиента.

Что на самом деле делает этот JavaScript?

Например, он обеспечивает вызов корректных (серверных) обработчиков событий, устанавливая скрытое поле __EVENTTARGET.

Можно ли получить первый список без второго?

Вы можете использовать обычные элементы управления HTML вместо элементов управления ASP.NET. Затем на стороне сервера вы можете прочитать значения элемента управления из коллекции Form.

1 голос
/ 11 августа 2009

Полагаю, вы имеете в виду JavaScript, связанный с <asp:Button /> элементом управления, верно?

В дополнение к причинам, упомянутым Fooberichu, javascript также может помочь с платформой проверки на стороне клиента ASP.NET.

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

Таким образом, если у вас есть две кнопки в форме, SaveButton и DeleteButton, javascript помогает платформе узнать, должна ли она выполнить событие SaveButton_Click или DeleteButton_Click.

Надеюсь, это поможет.

1 голос
/ 11 августа 2009

Это действительно зависит от типов элементов управления, которые вы пытаетесь использовать здесь - единственные, которые реализуют JavaScript, это те, которые не могут изначально вызывать обратную передачу (т. Е. Кнопка ввода / отправки - единственные два, которые могут) , Если вы используете LinkButton, ImageButton или что-то еще, для чего вы установили AutoPostBack = true, включите JavaScript, чтобы вызвать обратную передачу.

Другие элементы управления также могут использовать javascript, если они более продвинуты, такие как Календарь. Техническая причина использования javascript здесь заключается в том, чтобы обеспечить автоматическую обратную передачу, когда элементам управления требуется более продвинутое взаимодействие с сервером. Подумайте об этом, ссылка должна быть только ссылкой, и если мы пытаемся заставить ее работать как кнопка, Я должен заставить его сделать именно это с помощью взаимодействия с JavaScript.

Так что, как говорится, да, вы определенно можете использовать ASP.NET без javascript, вам просто нужно избегать элементов управления, которые его реализуют, включая функциональность, которую вы не могли бы иметь без него. Вы также можете легко добавить HTML-элементы управления и добавить атрибут runat = "server" и получить переменные-члены для элемента управления из-за кода.

...