asp.net form runat servidor
-
20-09-2019 - |
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
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.