J'ai une méthode d'action que je voudrais soit renvoyer JSON à une condition ou rediriger sur une autre condition. J'ai pensé que je pourrais faire ceci en renvoyant ActionResult de ma méthode mais en faisant ceci provoque l'erreur "tous les chemins de code ne renvoient pas une valeur"Comment renvoyer JSON ou RedirectToAction?
Quelqu'un peut-il me dire ce que je fais mal? Ou comment atteindre le résultat souhaité?
Voici le code ci-dessous:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Login(User user)
{
var myErrors = new Dictionary<string, string>();
try
{
if (ModelState.IsValid)
{
if (userRepository.ValidUser(user))
{
RedirectToAction("Index", "Group");
//return Json("Valid");
}
else
{
return Json("Invalid");
}
}
else
{
foreach (KeyValuePair<string, ModelState> keyValuePair in ViewData.ModelState)
{
if (keyValuePair.Value.Errors.Count > 0)
{
List<string> errors = new List<string>();
myErrors.Add(keyValuePair.Key, keyValuePair.Value.Errors[0].ErrorMessage);
}
}
return Json(myErrors);
}
}
catch (Exception)
{
return Json("Invalid");
}
}
Edit: pour clarifier les choses, je l'ai déjà essayé de return RedirectToAction("Index", "Group");
comme suggéré dans les réponses, mais il ne fait rien. Le point d'arrêt de l'action vers laquelle je redirige n'est pas touché.
Salut Daniel, j'ai essayé cela, mais il ne semble pas faire quoi que ce soit. Je mets un point d'arrêt dans l'action que je redirige mais cela ne me touche pas. J'ai mis à jour la question avec ça. Merci – DaveDev
Est-ce dans une méthode d'action qui n'accepte qu'un message et que vous essayez de rediriger vers une action qui n'accepte qu'un Get? Je me suis fait trébucher par ça avant. Gentillesse, Dan –