Pregunta

tengo un formulario de búsqueda en cada página, por lo tanto, lo puse en la página maestra. después de añadir runat=server a esa forma i soy ahora incapaz de utilizar otras formas que runat servidor;)

¿cómo la gente suele evitar esto?

Una idea es rodear toda la página con una forma runat=server pero entonces tiene que tener el código en la página maestra, incluso para aquellas formas que se utilizan sólo en una sub-página (como contactos, por ejemplo).

¿cómo la gente suele evitar esto?

thnx

¿Fue útil?

Solución

A menudo, esto se ha considerado una de las decisiones de diseño más problemáticos en ASP.NET. Es una cosa triste que estás un poco fijados a este principio de una sola forma por página.

Una de las razones de que es posible que desee tener múltiples formas es que el botón predeterminado se establecerá por el navegador para el botón de envío. Alguien a escribir en la barra de búsqueda y oprimir la tecla Enter no debe enviar el formulario principal (supongo que es la página de inicio de sesión), pero la pequeña forma del botón de búsqueda.

La forma más fácil y "estándar" para evitar esto es usar un asp: Panel y establezca la propiedad DefaultButton. Esto debe envolver alrededor de la parte que incluye tanto los campos de búsqueda y el botón de búsqueda.

No se preocupe acerca de la codificación del <form> desde el interior del masterpage, que rodea toda la página. Eso es un diseño común. La mayoría de los controles de servidor requieren una forma, ¿por qué no simplemente lo incluyen independientemente: se supone que debe estar allí

.

Otros consejos

Yo sugeriría que usted tenga el formulario de búsqueda HTML w / o runat = server en la página maestra, como

<form action="Search.aspx" method="get">
  <input type="text" name="q" /><input type="submit" />
</form>

Uso method = llegar a tener posibilidad de tomar el URL de la búsqueda. Y luego hacer lo que tiene con la consulta en código subyacente de la Search.aspx:

public void Page_Load(object sender)
{
  string q = Context.Request.QueryString["q"];
  /*...*/
}

La primera pregunta es, ¿por qué usted quiere tener múltiples formas runat = "servidor"?

Todavía puede tener formas sin runat="server" en la página, o utilizar la propiedad PostBackUrl en los controles Button, para publicar en diferentes páginas ASP.NET.

Para recoger los datos en un proceso de múltiples pasos, puede mirar el control Wizard de ASP.NET, vea de Scott Guthrie entrada de blog aquí .

Como alternativa se puede gestionar todo usted mismo y utilizar paneles de ASP.NET, o utilizar el PostBackUrl ya se ha mencionado para navegar de página ASP.NET a una página diferente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top