Как или возвратить JSON или RedirectToAction?

У меня есть Метод действия, из которого я или хотел бы возвратить JSON при одном условии или перенаправление на другом условии. Я думал, что мог сделать, это путем возврата ActionResult из моего метода, но выполнения этого вызывает ошибку "не, все пути выполнения кода возвращают значение"

Кто-либо может сказать мне, что я делаю неправильно? Или как достигнуть желаемого результата?

Вот код ниже:

[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");
            }

        }

Править: для разъяснения я уже попытался return RedirectToAction("Index", "Group"); как предложено в ответах, но это ничего не делает. Точка останова в действии, к которому я перенаправляю, не становится пораженной.

6
задан DaveDev 14 May 2010 в 09:46
поделиться

4 ответа

Вам нужно изменить

RedirectToAction("Index", "Group"); 

на

return RedirectToAction("Index", "Group"); 
3
ответ дан 17 December 2019 в 18:11
поделиться

вы должны вернуть RedirectResult. Измените эту строку

if (userRepository.ValidUser(user))
                    {
                        RedirectToAction("Index", "Group");
                        //return Json("Valid");
                    }

на

if (userRepository.ValidUser(user))
                    {
                        return RedirectToAction("Index", "Group");
                        //return Json("Valid");
                    }

, и все будет работать нормально.

0
ответ дан 17 December 2019 в 18:11
поделиться

Я думаю, причина того, что ваше перенаправление не попадает туда, куда вы хотите, заключается в том, что оно направлено на действие, которое принимает только Gets, а вы перенаправляете сообщение.

0
ответ дан 17 December 2019 в 18:11
поделиться

Отсутствует оператор возврата:

return RedirectToAction("Index", "Group");

Метод Controller.RedirectToAction возвращает RedirectToRouteResult и {{ 1}} Метод Controller.Json возвращает JsonResult . Оба расширяют ActionResult .

0
ответ дан 17 December 2019 в 18:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: