Как получить доступ к вводу формы html из кода asp.net
У меня есть базовая HTML-форма, которая вставлена в тег div на стороне сервера, основываясь на том, сколько записей существует в базе данных. Эта форма HTML выходит просто отлично, и все выглядит хорошо. Но на моей странице действий я не могу получить доступ к входным элементам из кода. Я попытался использовать область "Запрос", но при этом не понял этого подхода. Любые другие предложения?
Все приведенные ниже предложения велики, и обычно это то, что я буду делать. Но эти формы строятся на лету после того, как страница компилируется, поэтому runat = 'server' ничего не сделал для меня. Он просто передал это на страницу html.
Ответы
Ответ 1
Если вы обращаетесь к простой форме 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"]);
Это, конечно, будет работать только в том случае, если форма была "Отправлена", "Представлена" или выполнена через "Отправить". (т.е. кто-то нажал кнопку "Сохранить", или это было сделано программно через javascript.)
Кроме того, имейте в виду, что доступ к этим элементам таким образом может быть выполнен только тогда, когда вы не используете серверные элементы управления (т.е. runat="server"
), при этом сервер управляет идентификатором и именем.
Ответ 2
Я предполагаю, что вам нужно установить те элементы ввода runat = "server" .
Таким образом, вы не сможете получить доступ к элементу управления
<input type="text" name="email" id="myTextBox" />
Но вы сможете работать с
<input type="text" name="email" id="myTextBox" runat="server" />
И прочитайте его, используя
string myStringFromTheInput = myTextBox.Value;
Ответ 3
Обычно это делается с помощью Request.Form["elementName"]
.
Например, если у вас есть <input type="text" name="email" />
, вы можете использовать Request.Form["email"]
для доступа к его значению.
Ответ 4
Простейшим способом IMO является включение идентификатора и тега сервера runat для всех ваших элементов.
<div id="MYDIV" runat="server" />
Так как это похоже на динамически вставленные элементы управления, вы можете оценить FindControl().
Ответ 5
Поскольку вы используете код asp.net, добавьте id к элементу и runat = server.
Затем вы можете ссылаться на объекты в коде.
Ответ 6
Изменить: подумал о чем-то другом.
Вы говорите, что динамически создаете форму - действительно ли вы имеете в виду форму <form> и его содержимое приводит к тому, что asp.net берет проблему с несколькими формами на странице, и она уже создает для вас одну uberform.