web-dev-qa-db-fra.com

Comment fonctionne @ Html.BeginForm ()? et résultat de recherche dans Microsoft ASP.Net MVC 5 tutorial?

Je travaille sur MVC 5 Asp.Net et sur le suivant ceci tutoriel. Je me demande comment diable est-ce que cela va chercher le résultat quand je clique sur le bouton Filtrer?

Il arrive un moment où ce code est ajouté dans Movie/view/Index.cshtml

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

Maintenant, autant que je sache, il crée une zone de texte et un bouton à l'écran. Mais comment ce bouton appelle-t-il la fonction de recherche (index) et transmet-il la valeur de textbox à la fonction, je ne pouvais pas l'obtenir.

39
Muhammad Faraz

Ce n'est pas une question stupide. @html.BeginForm() fonctionne comme ceci. Il contient des paramètres que vous pouvez ajouter tels que ActionControllerFormTypehtmlAttributes. La façon dont cela fonctionne est que si vous le laissez vide, il recherchera une action de publication portant le même nom que sur la page où vous vous trouvez, par exemple si vous êtes dans la page de connexion, il recherchera une action de connexion. J'écris toujours ce que action et controller je veux qu'il accède.

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

}

Donc, votre post action devrait accepter les paramètres contenus dans votre formulaire, qui peuvent être un paramètre Model, c’est-à-dire un paramètre Product, ViewModel ou une chaîne unique. Dans votre cas avec la recherche votre action devrait ressembler à

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

Veuillez noter ici que la chaîne de recherche doit être transmise à la méthode. Le nom du <input> doit être identique au paramètre que prend votre action. Donc, notre formulaire devrait être comme ça

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

J'espère que cela apporte de la clarté.

57
Dejan.S