Je veux des URL propres et ont défini deux voies:Route ne se résolu
routes.MapRoute(
"Search",
"Search",
new { controller = "Search", action = "SearchPanel" }
);
routes.MapRoute(
"SearchResults",
"Search/{content}",
new { controller = "Search", action = "Search", content = string.Empty, query = string.Empty, index = 0 }
);
alors j'ai deux actions:
[HttpPost]
public ActionResult Search(string content, string query)
{
if (string.IsNullOrEmpty(query))
{
return RedirectToAction("Home", "Application");
}
return RedirectToAction("Search", new { content = content, query = query }); ;
}
public ActionResult Search(string content, string query, int? index)
{
if (string.IsNullOrEmpty(query))
{
return RedirectToAction("Home", "Application");
}
switch (content)
{
case "products":
// get products
return View("ResultsProducts");
case "categories":
// get categories
return View("ResultsCategories");
default:
// get all
return View("ResultsAll");
}
}
J'ai un panneau de recherche générique dans ma page principale qui a un zone de texte et un bouton de soumission. Il poste à /Search
. Le nom de la zone de texte est query
. Tout va bien et super. Quand je frappe Search
ma première action est exécuté, mais échoue sur RedirectToAction()
appel:
Aucun itinéraire dans la table de routage correspond aux valeurs fournies.
Je n'arrive pas à trouver la raison pour laquelle cela ne fonctionne pas.
J'ai eu un problème similaire après la mise à jour de la version 2 de MVC. Je pourrais naviguer à la page spécifiant l'URL, mais si j'ai essayé d'employer RedirectToAction ("ActionName") j'ai eu la même erreur: "Aucun itinéraire dans la table de route ..." Dans mon cas, j'ai fini par dupliquer la route L'entrée fonctionnait en utilisant l'URL et supprimait les autres paramètres et maintenant le RedirectToAction fonctionne aussi. Très étrange .... Mais merci pour le pourboire. – Rick