La mise en œuvre d'une fonction de recherche simplifiée dans ASP.NET MVC
Je suis en train de mettre en œuvre une page de recherche de base dans l'application web que je développe. Actuellement, les regards de page comme celle-ci
Lorsqu'un utilisateur entre un nom de famille, le contrôleur est appelé pour rechercher dans la base de données Microsoft SQL Server backend tous les comptes portant ce nom
Pour le moment, le formulaire HTML ressemble à ceci
@using (Html.BeginForm("SearchAct", "HomeController", FormMethod.Post))
{
<form>
<div>
Last Name:<br>
<input type="text" id="nameToFind">
<input type="button" id="submitId" value="submit" />
</div>
</form>
}
Il est censé appeler ce contrôleur
[HttpPost]
public void SearchAct()
{
Console.WriteLine();
}
qui finira par exécuter la recherche, puis mettre les résultats sur la page. Cependant, je ne peux pas le contrôleur à appeler. J'ai défini un point d'arrêt sur la WriteLine pour que je sache qu'elle n'arrive jamais et je ne sais pas ce que je fais de mal
Ajoutez un attribut de nom à votre zone de texte. Construction de la collection de formulaires basée uniquement sur les attributs de nom
Changez le type de bouton pour soumettre, puis il publiera votre formulaire au contrôleur.
@using (Html.BeginForm("SearchAct", "Home", FormMethod.Post))
{
<div>
Last Name:<br>
<input type="text" id="nameToFind" name="nameToFind">
<input type="submit" id="submitId" value="submit" />
</div>
}
@{
if(ViewBag.SearchKey != null)
{
<span>
Search Key: @ViewBag.SearchKey
</span>
}
}
Au lieu de cela, Console.WriteLine()
utilisez ViewBag
pour renvoyer vos données requises pour afficher les actions ci-dessous
//Get Action for rendering view
public ActionResult SearchAct()
{
return View();
}
[HttpPost]
public ActionResult SearchAct(string nameToFind)
{
ViewBag.SearchKey = nameToFind;
return View();
}
Le nom du paramètre d'action et la valeur d'attribut du nom de la zone de texte doivent être identiques, sinon null
Si votre formulaire contient plusieurs zone de texte puis lire toutes les valeurs d'entrée sous forme FromCollection
ouRequest
[HttpPost]
public ActionResult SearchAct(FormCollection form)
{
ViewBag.SearchKey = form["nameToFind"];
return View();
}