Domanda

ho un modulo di ricerca in ogni pagina, quindi ho messo sulla pagina master. dopo l'aggiunta di runat=server a quella forma sono ora in grado di utilizzare altre forme che runat server di;)

Come la gente di solito ottenere intorno a questo?

uno idea è di circondare l'intera pagina con una forma runat=server ma poi devo avere il codice nella pagina master anche per quelle forme che vengono utilizzati in una sola pagina secondaria (come contatto per esempio).

Come la gente di solito ottenere intorno a questo?

thnx

È stato utile?

Soluzione

Questo è stato spesso considerato una delle decisioni di progettazione più problematici su ASP.NET. E 'una cosa triste che si sta un po fissi questo principio pagina uno-form-per-.

Una ragione per cui si consiglia di avere molteplici forme è che il pulsante predefinito sarà impostato dal browser per il pulsante di invio. Qualcuno a digitare nella casella di ricerca e premendo invio non deve inviare il modulo principale (suppongo che sia la pagina di login), ma la piccola forma del pulsante di ricerca.

Il modo più semplice e "standard" per ovviare a questo sta usando un asp: Panel e impostare la proprietà DefaultButton. Questo dovrebbe avvolgere la parte che comprende sia i campi di ricerca e il pulsante di ricerca.

Non si preoccupi per la codifica del <form> dall'interno del masterpage, che circonda l'intera pagina. Questo è un disegno comune. La maggior parte dei controlli server richiedono una forma, quindi perché non solo sono a prescindere: si suppone di essere lì

.

Altri suggerimenti

Mi piacerebbe suggerirei per fare modulo di ricerca html w / o runat = server sulla pagina master, come

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

Utilizzare il metodo = arrivare ad avere la possibilità prendere URL della ricerca. E poi fare tutto ciò che è necessario con la query in codebehind del Search.aspx:

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

La prima domanda è, perché si vuole avere molteplici forme runat = "server"?

È ancora possibile avere forme senza runat="server" sulla pagina, o utilizzare la proprietà PostBackUrl sui controlli Button, di inviare alle diverse pagine ASP.NET.

Per raccogliere i dati in un processo multi-step, è possibile guardare il controllo ASP.NET guidata, vedere di Scott Guthrie blog post qui .

In alternativa è possibile gestire tutto da soli e utilizzare pannelli ASP.NET, o utilizzare il PostBackUrl già citato per spostarsi da pagina ASP.NET a una pagina diversa.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top