Je me demandais s'il était possible de filtrer quelle action est invoquée en fonction d'un paramètre dans la chaîne de requête.ASP.NET MVC - Filtrer quelle action invoquer en fonction de la chaîne de requête
Par exemple, i ont une grille avec une colonne de boutons radio pour sélectionner un élément de la grille. La grille est enveloppée dans un formulaire et en haut de la grille sont des boutons pour éditer/supprimer l'élément sélectionné. En cliquant sur les boutons edit/delete, vous retournez et vous quittez jquery magic pour définir une propriété de commande afin que je puisse distinguer entre un edit et un post. Je peux alors gérer ceci en ajoutant l'attribut de filtre HttpPost à mon action.
Maintenant, je dois ajouter une recherche au formulaire. Le plus simple pour moi est de placer le formulaire de recherche en dehors du formulaire existant et de définir la méthode à obtenir. Cela fonctionne mais j'ai un cas où le formulaire de recherche doit être situé dans ma forme de grille. Je comprends que je ne peux pas avoir de formulaires imbriqués donc j'ai enlevé les étiquettes de forme pour la forme interne, mais maintenant, en faisant une recherche, il va déclencher une demande de publication. Si vous continuez à suivre, vous verrez que cela déclenche la méthode d'action edit/delete mais je veux vraiment déclencher l'action initiale mais avoir un paramètre de recherche supplémentaire.
Voici ce que mes méthodes d'action ressemblent:
public ActionResult Index(string search)
{
return GetData(search);
}
[HttpPost]
public ActionResult Index(string command, int id)
{
switch (command)
{
case "Delete":
DeleteData(id);
break;
case "Edit":
return RedirectToAction("Edit", new { id = id });
}
return RedirectToAction("Index");
}
Idéalement je voudrais pouvoir dire:
public ActionResult Index(string search)
{
return GetData(search);
}
[HttpPost]
[Command(Name="Delete,Edit")] OR [Command(NameIsNot="Search")]
public ActionResult Index(string command, int id)
{
switch (command)
{
case "Delete":
DeleteData(id);
break;
case "Edit":
return RedirectToAction("Edit", new { id = id });
}
return RedirectToAction("Index");
}
Remarquez comment i filtre qui l'action est invoquée en fonction de la commande. Peut-être que je suis dans une confusion complète ici, mais MVC est tout à fait nouveau pour moi et j'apprécierais vraiment si quelqu'un pouvait aider.
Merci
Bravo, cela devrait certainement me conduire dans la bonne direction. Merci encore. – nfplee