ASP.NET:Lectura de valores de variables del formulario en la página de acción del formulario de búsqueda
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
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.