2014-10-26 12 views
29

Sto lavorando su MVC 5 Asp.Net e sul seguente tutorial this. Mi chiedo come diavolo comporti il ​​risultato quando clicco sul pulsante Filtro.Come funziona @ Html.BeginForm()? e risultati della ricerca in Microsoft ASP.Net MVC 5 tutorial?

Arriva un punto in cui si aggiunge questo codice in Movie/view/Index.cshtml

@using (Html.BeginForm()) 
{  
    <p> Title: @Html.TextBox("SearchString") <br /> 
    <input type="submit" value="Filter" /></p> 
} 

Ora, per quanto ne so, si crea una casella di testo di un pulsante sullo schermo. Ma come è questo pulsante che chiama la funzione search (index) e passa il valore di textbox in funzione, non ho potuto ottenere questo. Plzz lo elabora, io sono nuovo in esso. Scusa per questa roba stupida. Grazie

risposta

40

Non è una domanda stupida. @html.BeginForm() funziona in questo modo. Ha alcuni parametri che è possibile aggiungere ad esso come ActionControllerFormTypehtmlAttributes. Il modo in cui funziona è che se lo lasci vuoto cercherà un'azione post con lo stesso nome che nella pagina in cui ti trovi ora, ad esempio se ti trovi nella pagina di accesso, cercherà un'azione di login post. Io scrivo sempre ciò che action e controller voglio che acceda.

@html.BeginForm("AddUser", "Admin", FormMethod.Post, new { @class = "my_form"}) 

Così i vostri post action dovrebbe accettare parametri che il modulo contiene, e che può essere un Model cioè un Product, ViewModel o singoli parametri di stringa. Nel tuo caso con la ricerca la vostra azione dovrebbe essere simile

[HttpPost] 
public ActionResult Search(string SearchString) 
{ 
    //do something here 
} 

Si prega di notare qui, per la stringa di ricerca per essere passato al metodo. Il nome dello <input> deve essere uguale al parametro che l'azione richiede. Quindi il nostro modulo dovrebbe essere così

@using (Html.BeginForm("Search", "YOUR CONTROLLER", FormMethod.Post)){  
    <p> Title: @Html.TextBox("SearchString") <br /> 
    <input type="submit" value="Filter" /></p> 
} 

Spero che questo porti chiarezza.

+1

Il mio modulo è lo stesso indicato in questione. Inoltre, il parametro nella funzione Action (indice) è "searchString", non "SearchString" (Here S è il capitale). Se la "S" maiuscola e minuscola non fa alcuna differenza, allora accetto la tua risposta. –

+1

Bene, ho risposto alla domanda cambiando il caso di diversi alfabeti nel codice del modulo. Funziona ancora. Grazie e accettato :) –

+0

Esiste un modo per utilizzare semplicemente i parametri del modello? Ad esempio, ho un modello con UserName, UserEmail e voglio una funzione con un solo parametro - Modello. – FrenkyB