Frage

ich habe ein Suchformular auf jeder Seite, ich es daher auf der Masterseite setzen. nach der Zugabe von runat=server zu, dass i Form bin jetzt nicht in der Lage andere Formen dass Runat Server zu verwenden;)

Wie der Regel Menschen, dies zu umgehen?

Eine Idee ist es, die ganze Seite mit einem Formular runat=server zu umgeben, aber dann habe ich den Code in der Master-Seite haben, sogar für jene Formen, die nur auf eine Unterseite (zum Beispiel wie Kontakt) verwendet werden.

Wie der Regel Menschen, dies zu umgehen?

thnx

War es hilfreich?

Lösung

Dies ist häufig gegolten eine der problematischsten Design-Entscheidungen auf ASP.NET. Es ist eine traurige Sache, dass Sie ein bisschen auf dieses one-Form-per-Seite Prinzip festgelegt.

Ein Grund, dass Sie mehrere Formulare haben wollen, ist, dass die Standard-Schaltfläche wird vom Browser auf die Absenden-Button eingestellt werden. Jemand Typisierung in Ihrem Suchfeld ein und schlagen eingeben sollte nicht das Hauptformular einreichen (nehme an, dass die Login-Seite), aber die kleine Form der Suchtaste.

Die einfachste und „Standard“ Weg zur Arbeit um dies mit einem asp: Panel und die Default Eigenschaft festgelegt. Dies sollte den Teil umschlingen, die sowohl die Suchfelder und die Suchtaste enthält.

Kümmere dich nicht um die Codierung der <form> aus dem Inneren des Masterpage, die ganze Seite umgibt. Das ist ein gemeinsames Design. Die meisten Server-Steuerelemente erfordern eine Form, warum also nicht einfach sind unabhängig: es soll da sein

.

Andere Tipps

Ich würde vorschlagen, Sie suchen HTML-Formular haben, w / o runat = Server auf der Masterseite, wie

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

Verwenden Sie die Methode = bekommen Möglichkeit nehmen URL der Suche. Und dann tun, was Sie mit der Abfrage in Code-Behind der Search.aspx müssen:

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

Die erste Frage ist, warum wollen Sie mehrere Runat haben = "server" Formulare?

Sie können immer noch Formulare ohne runat="server" auf der Seite haben, oder verwenden Sie die PostBackUrl Eigenschaft auf Button Kontrollen, um verschiedene ASP.NET-Seiten zu veröffentlichen.

, um Daten in einem mehrstufigen Prozess, können Sie entweder Blick auf dem ASP.NET Wizard-Steuerelement finden Scott Guthrie Blog-Post hier .

Alternativ können Sie alles selbst verwalten und ASP.NET Panels verwenden, oder verwenden Sie das bereits erwähnte PostBackUrl zu navigate von ASP.NET-Seite zu einer anderen Seite.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top