Как получить доступ к вводу формы html из кода asp.net позади

У меня есть базовая HTML-форма, которая вставляется в тег div на стороне сервера в зависимости от того, сколько записей существует в базе данных. Эта HTML-форма выходит просто отлично, и все выглядит хорошо. Но на моей странице действий я не могу получить доступ к элементам ввода из кода позади. Я пробовал использовать область запроса, но при таком подходе ничего не вышло. Есть другие предложения?

Все приведенные ниже предложения прекрасны, и обычно я бы так и поступил. Но эти формы создаются на лету после компиляции страницы, поэтому runat = 'server' ничего не сделал для меня. Он просто передал это на страницу html.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
36
0
289 091
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Обычно это делается с помощью Request.Form["elementName"].

Например, если у вас есть <input type = "text" name = "email" />, вы можете использовать Request.Form["email"] для доступа к его значению.

Обновлено: подумал о другом.

Вы говорите, что создаете форму динамически - вы действительно имеете в виду <form> и его содержимое, потому что asp.net имеет проблемы с несколькими формами на странице и уже создает для вас одну уберформу.

Самый простой способ ИМО - включить идентификатор и тег сервера runat во все ваши элементы.

<div id = "MYDIV" runat = "server" />

Поскольку похоже, что это динамически вставляемые элементы управления, вы можете оценить FindControl ().

Хорошая идея, но похоже, что он вставляет простой HTML; не динамические элементы управления, поэтому атрибут runat никогда не будет обработан

missaghi 23.12.2008 18:38

Вот в чем суть моей проблемы: атрибут runat никогда не компилируется, поэтому я не могу получить к ним должный доступ.

user18411 23.12.2008 19:12

Я предполагаю, что вам нужно установить эти входные элементы на runat = "сервер".

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

<input type = "text" name = "email" id = "myTextBox" />

Но ты сможешь работать с

<input type = "text" name = "email" id = "myTextBox" runat = "server" />

И прочтите его, используя

string myStringFromTheInput = myTextBox.Value;

Когда я это делаю, у меня появляется {control} not found in current context ...

Si8 21.07.2014 20:10

Поскольку вы используете код программной части asp.net, добавьте к элементу идентификатор и runat = server.

Затем вы можете ссылаться на объекты в коде.

Ответ принят как подходящий

Если вы получаете доступ к простой HTML-форме, ее необходимо отправить на сервер с помощью кнопки отправки (или через сообщение javascript). Обычно это означает, что определение вашей формы будет выглядеть следующим образом (у меня не хватает памяти, убедитесь, что вы проверяете правильность элементов html):

<form method = "POST" action = "page.aspx">

<input id = "customerName" name = "customerName" type = "Text" />
<input id = "customerPhone" name = "customerPhone" type = "Text" />
<input value = "Save" type = "Submit" />

</form>

Вы должны иметь доступ к данным customerName и customerPhone следующим образом:

string n = String.Format("{0}", Request.Form["customerName"]);

Если у вас есть method = "GET" в форме (не рекомендуется, это мешает вашему URL-адресу), вам нужно будет получить доступ к данным формы следующим образом:

string n = String.Format("{0}", Request.QueryString["customerName"]);

Это, конечно, будет работать только в том случае, если форма была «Размещена», «Отправлена» или выполнена через «Postback». (т.е. кто-то нажал кнопку «Сохранить», или это было сделано программно через javascript.)

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

Это и было проблемой, мне не хватало атрибута method = post. Спасибо много.

user18411 23.12.2008 19:31

Спасибо, я искал это в последнее время.

Anvar 27.08.2010 02:32

Можно ли также присвоить значения этим элементам управления с помощью запроса? При попытке сделать это у меня возникла ошибка "только для чтения".

eran otzap 14.08.2011 00:05

Я использовал только Id, вам нужно указать Name, иначе он не работает. Спасибо за помощь!

VinnyG 16.01.2012 22:52

Вам необходимо использовать двойные кавычки, то есть "customerName". Одиночные кавычки не работают.

nu everest 02.04.2014 03:35

Другие вопросы по теме