ASP.NET: LEITURA VALORES VARIÁVEIS DE FORMULAÇÃO NA PÁGINA DE AÇÃO DO FORMO DE PESQUISA
Pergunta
Eu tenho um site onde quero implementar a funcionalidade de pesquisa. Então adicionei o código abaixo para ter uma caixa de pesquisa na minha página 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>
Em Results.aspx, quero ler o Valor Usuário inserido na caixa de texto TXTSearchKey. Qual é a maneira ideal de fazer isso? eu usei
string strKey = Request.Form["txtSearchKey"].ToString();
Mas ele joga uma exceção de referência nula. Conselho por favor
Eu não quero ter todas as páginas em asp.net.Eu quero ter apenas a página de resultado como asp.net
desde já, obrigado
Solução
Pode ser porque você não tem um NOME atributo no campo da caixa de texto. Esse é o valor que é usado como a chave na coleta de solicitação.form. Um campo de entrada sem um atributo de nome não será enviado, eu acho.
por exemplo:
<input id="txtSearchKey" type="text" name="txtSearchKey" />
Outras dicas
Você pode obter seu campo TxtSearchKey com isso:
string strKey = PreviousPage.Request.Form["txtSearchKey"].ToString();
Mas, em vez de usar a ação do formulário para encaminhar sua pesquisa para outra página, você pode usar um botão com a propriedade Postbackurl como essa:
<asp:Button runat="server" ID="btnSearch" PostBackUrl="Search.aspx" />
Porque no Asp.net, ter mais do que um formulário não é permitido.
Existe algum motivo para você não usar
formulário runat = "servidor"
e depois arraste um campo de texto e um botão neste formulário. Em seguida, duplique o botão e escreva o código que você deseja.
Se você quiser fazer isso do seu jeito, você precisa dar seu nome SA = "txtMysearchKey" para que funcione
A maneira como você está fazendo as coisas não é realmente a maneira como você trabalha nos formulários da Web do ASP.NET. A maneira preferida é usar os controles e eventos do ASP.NET Server para abstrair o processo que você está tentando alcançar. Por exemplo, seu formulário deve realmente ser algo assim (observe o atributo runat = "servidor" que permite fazer referência aos controles programaticamente):
<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>
Então, em seu código atrás de você lidar com o ButtonSubmit_Click
Evento como este para permitir que você obtenha o valor do TxtSearchKey
caixa de texto:
protected void ButtonSubmit_Click(object sender, EventArgs e)
{
string strKey = TxtSearchKey.Text;
}
Veja o Exemplo de início rápido para o controle da caixa de texto para mais informações.
Apenas não use .toString () após a solicitação.form ... ele não fornecerá uma referência nula depois disso.