ASP.NET:Lectura de valores de variables del formulario en la página de acción del formulario de búsqueda

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

  •  21-09-2019
  •  | 
  •  

Pregunta

Tengo un sitio web donde quiero implementar la función de búsqueda. Así que agregué el siguiente código para tener un cuadro de búsqueda en mi 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>

en Results.aspx, quiero leer el valor que el usuario ingresó en el cuadro de texto txtSearchKey.¿Cuál es la forma ideal de hacer esto?solía

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

Pero arroja una excepción de referencia nula.Por favor aconséjame

No quiero tener todas las páginas en ASP.NET. Quiero tener solo la página de resultados como ASP.NET

gracias de antemano

¿Fue útil?

Solución

Podría ser debido a que no tiene un nombre atributo en el campo de texto. Ese es el valor que se utiliza como la clave de la colección Request.Form. No se presentó un campo de entrada sin un atributo de nombre, creo.

ej .:

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

Otros consejos

Usted puede conseguir su campo txtSearchKey por esto:

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

Sin embargo, en lugar de utilizar la acción formulario para enviar su búsqueda a otra página, se puede utilizar un botón con PostBackUrl propiedad de esa manera:

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

Debido a que en ASP.NET, tener más entonces no se permite una forma.

¿Hay alguna razón no utiliza

forma runat = "servidor"

y arrastre un campo de texto y un botón en esta forma. A continuación, haga doble clic sobre el código del botón y escribe lo que quieras.

Si quiere hacerlo a su manera lo que necesita para dar a sus s un nombre = "txtMySearchKey" para que funcione

La forma en que van las cosas, no es realmente la forma de trabajar en los formularios web ASP.NET. La forma preferida es el uso de controles de servidor ASP.NET y eventos para abstraer el proceso que se está tratando de lograr. Por ejemplo, su forma debe ser realmente algo como esto (tenga en cuenta el atributo runat = "servidor" que le permite hacer referencia a los controles mediante programación):

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

A continuación, en su código detrás de usted controlar el evento ButtonSubmit_Click como esta para que pueda obtener el valor de la caja de texto TxtSearchKey:

protected void ButtonSubmit_Click(object sender, EventArgs e)
{
    string strKey = TxtSearchKey.Text;
}

Ver el href="http://quickstarts.asp.net/QuickStartv20/aspnet/doc/ctrlref/standard/textbox.aspx" rel="nofollow noreferrer"> ejemplo para obtener más información.

Simplemente no utilizan .toString () después de la request.form ... no dará una referencia nula después de eso.

scroll top