Pergunta

eu tenho um formulário de pesquisa em cada página, assim que eu colocá-lo na página principal.depois de adicionar runat=server de que forma eu estou agora não é possível usar outras formas que runat server ;)

como as pessoas geralmente se contornar isso?

uma ideia é cercar toda a página com um formulário runat=server mas então eu tenho que ter o código na página principal do mesmo para os formulários que são utilizados em apenas uma sub-página (como o contato, por exemplo).

como as pessoas geralmente se contornar isso?

thnx

Foi útil?

Solução

Este tem sido muitas vezes considerada uma das mais problemáticas e as decisões de design em ASP.NET.É uma coisa triste que você está meio que fixa a este formulário por página princípio.

Uma razão que você pode querer ter várias formas é que o botão padrão será definido pelo browser para o botão enviar.Alguém escrevendo em sua caixa de pesquisa e pressionar enter não deve apresentar o formulário principal (acho que é a página de início de sessão), mas a pequena forma do botão de pesquisa.

A maneira mais fácil e "padrão" maneira de contornar isto é usar um asp:Panel e defina a propriedade DefaultButton.Este deve ser disposto ao redor da parte, que inclui os campos de pesquisa e o botão de busca.

Não se preocupe com a codificação de <form> de dentro da masterpage, em torno de toda a página.Esse é um projeto comum.A maioria dos controles de servidor requerem um formulário, então por que não simplesmente incluí-lo independentemente:é suposto estar lá.

Outras dicas

Eu sugiro que você tenha de pesquisa formulário html w/o runat=server na página principal, como

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

Use method=get possibilidade de tomar URL da pesquisa.E, em seguida, faça o que você precisa com a consulta no code-behind da Pesquisa.aspx:

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

Primeira pergunta é, por que você quer ter vários runat="server" formas?

Você ainda pode ter formulários sem runat="server" na página, ou utilize o PostBackUrl propriedade Button controles, para postar para diferentes ASP.NET páginas.

Coletar dados em um processo de várias etapas, você pode olhar para o ASP.NET Assistente de controle, ver Scott Guthrie post do blog aqui.

Alternativamente, você pode gerenciar tudo sozinho e usar ASP.NET Painéis, ou usar os já mencionados PostBackUrl para navegar a partir de ASP.NET página para uma página diferente.

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