2009-09-08 1 views
0

У меня есть сайт, где я хочу, чтобы осуществить поиск functionality.So я добавил код, приведенный ниже, чтобы окно поиска в моем HTML-страницуASP.NET: Чтение значения переменной формы на странице акции в форме поиска

<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> 

in Results.aspx, я хочу прочитать значение, введенное пользователем в текстовое поле txtSearchKey. Каков идеальный способ сделать это? Я использовал

string strKey = Request.Form["txtSearchKey"].ToString(); 

Но он бросает исключение для исключения в качестве ссылки. Пожалуйста, советы

Я не хочу, чтобы все страницы в ASP.NET.I хочет иметь только страницу результата, как ASP.NET

Заранее спасибо

+0

Куда вы поместите строку кода выше? – patmortech

ответ

4

Возможно, у вас нет атрибута NAME в поле текстового поля. Это значение, которое используется как ключ в коллекции Request.Form. Я думаю, что поле ввода без атрибута имени не будет представлено.

.: например

<input id="txtSearchKey" type="text" name="txtSearchKey" /> 
+0

+1 Да, я не заметил этого атрибута. – Canavar

+0

Я добавил атрибут имени тоже. Но не работает, то также – Shyju

+0

Все еще получаю исключение для ссылки на null? Кроме того, где именно вы помещаете код для извлечения значения формы (т. Е. Какого обработчика событий страницы или встроенного)? – patmortech

0

Вы можете получить поле txtSearchKey этим:

string strKey = PreviousPage.Request.Form["txtSearchKey"].ToString(); 

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

<asp:Button runat="server" ID="btnSearch" PostBackUrl="Search.aspx" /> 

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

+0

Я хотел бы иметь только одну страницу ASP.NET, которая покажет результаты.Я хочу, чтобы остальные страницы были HTML-страницами – Shyju

+0

, тогда моя первая рекомендация подходит именно вам. – Canavar

+0

На самом деле это не так. Поскольку предыдущая страница является простым HTML, свойство PreviousPage будет пустым, и это приведет к ошибке. – patmortech

0

Есть ли какой-либо причине вы не используете

форма RUNAT = "сервер"

, а затем перетащить TextField и Button в этой форме. Затем дважды нажмите кнопку и напишите код, который вы хотите.

Если вы хотите сделать это путь Вам нужно дать свое имя са = «txtMySearchKey» для того, чтобы работать

0

То, как вы собираетесь о вещах, на самом деле не так, как вы работаете в Интернете ASP.NET формы. Предпочтительным способом является использование элементов управления и событий сервера asp.net для абстрагирования процесса, который вы пытаетесь достичь. Например, ваша форма должна действительно быть что-то вроде этого (обратите внимание на RUNAT = «сервер» атрибут, который позволяет ссылаться на элементы управления программными средствами):

<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; 
} 

Смотрите Quickstart example for the TextBox control для получения дополнительной информации.

+0

Я не просил нажать кнопку мыши на веб-странице с текстовым полем. У меня есть только одна страница (чтобы показать результаты поиска) и много HTML-страниц (которые должны иметь это окно поиска) :) – Shyju

+0

Почему используется asp.net, если вы не собираетесь использовать его функции? Ваш звонок, я полагаю ... –

0

Просто не используйте .toString() после Request.form ... после этого он не даст нулевой ссылки.