ASP.NET: LEITURA VALORES VARIÁVEIS DE FORMULAÇÃO NA PÁGINA DE AÇÃO DO FORMO DE PESQUISA

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

  •  21-09-2019
  •  | 
  •  

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

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top