ASP.NET :Чтение значений переменных формы на странице действий формы поиска
Вопрос
У меня есть веб-сайт, на котором я хочу реализовать функцию поиска.Поэтому я добавил приведенный ниже код, чтобы на моей html-странице было окно поиска
<form id="search" method="post" action="Results.aspx">
<input id="txtSearchKey" type="text" name="txtSearchKey" />
<input id="Submit1" type="submit" value="submit" /><br />
<br />
</form>
в Results.aspx я хочу прочитать значение, введенное пользователем в текстовое поле txtSearchKey.Каков идеальный способ сделать это ?Я использовал
string strKey = Request.Form["txtSearchKey"].ToString();
Но это выдает исключение с нулевой ссылкой .Пожалуйста, посоветуйте
Я не хочу иметь все страницы в ASP.NET. Я хочу иметь только страницу результатов в виде ASP.NET
Заранее спасибо
Решение
Может быть, потому, что у вас нет Имя атрибут в поле текстового поля.Это значение, которое используется в качестве ключа в запросе.Коллекция форм.Я думаю, поле ввода без атрибута name не будет отправлено.
например ,:
<input id="txtSearchKey" type="text" name="txtSearchKey" />
Другие советы
Вы можете получить свое поле txtSearchKey следующим образом :
string strKey = PreviousPage.Request.Form["txtSearchKey"].ToString();
Но вместо того, чтобы использовать действие формы для перенаправления вашего поиска на другую страницу, вы можете использовать кнопку со свойством PostBackUrl, подобным этому :
<asp:Button runat="server" ID="btnSearch" PostBackUrl="Search.aspx" />
Потому что в ASP.NET иметь более одной формы не допускается.
Есть ли какая-то причина, по которой вы не используете
форма runat="сервер"
а затем перетащите текстовое поле и Кнопку в эту форму.Затем дважды щелкните по кнопке и напишите нужный вам код.
Если вы хотите сделать это по-своему, вам нужно присвоить вашему s имя ="txtMySearchKey", чтобы это сработало
То, как вы действуете, на самом деле не похоже на то, как вы работаете в веб-формах. ASP.NET веб-формы.Предпочтительный способ - использовать asp.net серверные элементы управления и события для абстрагирования процесса, которого вы пытаетесь достичь.Например, ваша форма действительно должна быть примерно такой (обратите внимание на атрибут runat="server", который позволяет вам программно ссылаться на элементы управления):
<form id="form1" runat="server">
<div>
<asp:Panel ID="PanelSearch" runat="server" DefaultButton="ButtonSubmit">
<asp:TextBox ID="TxtSearchKey" runat="server" /><br />
<asp:Button ID="ButtonSubmit" Text="Submit" runat="server"
onclick="ButtonSubmit_Click" /><br />
</asp:Panel>
</div>
</form>
Затем в вашем коде позади вас вы бы обработали ButtonSubmit_Click
событие, подобное этому, чтобы вы могли получить значение из TxtSearchKey
текстовое поле:
protected void ButtonSubmit_Click(object sender, EventArgs e)
{
string strKey = TxtSearchKey.Text;
}
Смотрите на Пример быстрого запуска для элемента управления TextBox для получения дополнительной информации.
Просто не используйте .toString() после запроса.form...после этого он не будет выдавать нулевую ссылку.