ASP.NET :Чтение значений переменных формы на странице действий формы поиска

StackOverflow https://stackoverflow.com/questions/1393163

  •  21-09-2019
  •  | 
  •  

Вопрос

У меня есть веб-сайт, на котором я хочу реализовать функцию поиска.Поэтому я добавил приведенный ниже код, чтобы на моей 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...после этого он не будет выдавать нулевую ссылку.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top