Je suppose que votre fonction NameSearch
évalue le résultat d'une requête et renvoie ces résultats en fonction de:
- Est-ce la requête valide? Sinon, retournez à l'index.
- Y at-il 0 ou> 1 personnes dans le résultat? Si oui, envoyer aux résultats de la recherche
- S'il y a exactement 1 personne dans le résultat, envoyer à Détails.
Ainsi, plus de moins votre contrôleur ressemblerait à ceci:
public class PersonController
{
public ActionResult NameSearch(string name)
{
// Manage query?
if (string.IsNullOrEmpty(name))
return RedirectToAction("Index");
var result = GetResult(name);
var person = result.SingleOrDefault();
if (person == null)
return RedirectToAction("SearchResults", new { name });
return RedirectToAction("Details", new { id = person.Id });
}
public ActionResult SearchResults(string name)
{
var model = // Create model...
return View(model);
}
public ActionResult Details(int id)
{
var model= // Create model...
return View(model);
}
}
Donc, vous auriez probablement besoin de définir des itinéraires tels que:
routes.MapRoute(
"SearchResults",
"Person/SearchResults/{name}",
new { controller = "Person", action = "SearchResults" });
routes.MapRoute(
"Details",
"Person/Details/{id}",
new { controller = "Person", action = "Details" });
Le résultat de l'action Index
seront traitées par l'itinéraire {controller}/{action}/{id}
par défaut.
Qui vous pousse dans la bonne direction?
Merci matthew! C'est exactement la direction que je cherchais! – zSynopsis
Nevermind. J'ai découvert ce que je faisais mal. – zSynopsis
Pouvez-vous mettre à jour la question avec un extrait de ce à quoi ressemble votre contrôleur actuel, ainsi que vos itinéraires (et l'ordre dans lequel ils sont enregistrés) –