Question

J'ai un formulaire de recherche sur chaque page, donc je l'ai mis sur la page principale. après avoir ajouté runat=server à cette forme je suis désormais incapable d'utiliser d'autres formes que Runat serveur;)

comment les gens obtiennent généralement autour de cela?

une idée est d'entourer la page entière avec une forme runat=server mais je dois avoir le code dans la page principale, même pour les formes qui sont utilisés sur une seule sous-page (comme un contact par exemple).

comment les gens obtiennent généralement autour de cela?

thnx

Était-ce utile?

La solution

Cela a souvent été considéré comme l'une des décisions de conception les plus problématiques sur ASP.NET. Il est triste que vous êtes un peu fixé à celui-ci forme par page principe.

Une raison pour laquelle vous pouvez avoir plusieurs formes est que le bouton par défaut sera réglé par le navigateur du bouton soumettre. Quelqu'un tapant dans votre champ de recherche et ne doit pas frapper entrer soumettre le formulaire principal (qui est la supposer page de connexion), mais la forme minuscule du bouton de recherche.

Le plus simple et « standard » façon de contourner cela est d'utiliser un asp: Panel et définissez la propriété DefaultButton. Cela devrait s'enrouler autour de la partie qui comprend à la fois les champs de recherche et le bouton de recherche.

Ne vous inquiétez pas coder le <form> à l'intérieur du masterpage, entourant la page. C'est une conception commune. La plupart des contrôles de serveur nécessitent une forme, alors pourquoi ne pas inclure simplement peu importe: il est censé être là

.

Autres conseils

Je vous suggère d'avoir un formulaire de recherche html w / o runat = serveur sur la page principale, comme

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

Utilisez la méthode = get avoir la possibilité de prendre l'URL de la recherche. Et puis faire tout ce que vous avez besoin avec la requête dans codebehind du Search.aspx:

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

La première question est, pourquoi voulez-vous d'avoir plusieurs formes runat = "serveur"?

Vous pouvez toujours avoir des formes sans runat="server" sur la page, ou utiliser la propriété PostBackUrl sur les contrôles de Button, publier sur différentes pages ASP.NET.

Pour collecter des données dans un processus en plusieurs étapes, vous pouvez regarder le contrôle Assistant ASP.NET, voir Scott Guthrie blog ici .

Sinon, vous pouvez gérer tout vous-même et utiliser des panneaux ASP.NET, ou utiliser le PostBackUrl déjà mentionné pour naviguer de page ASP.NET vers une autre page.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top