我有一个处理法,我会要么喜欢从上另一个条件的一个条件或重定向返回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");作为答案,建议,但它不会做任何事情。在我重定向到没有得到命中动作的断点。

有帮助吗?

解决方案

您需要修改

RedirectToAction("Index", "Group"); 

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

其他提示

您shold返回RedirectResult。改变这个字符串

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

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

和所有将正常工作。

您缺少return语句:

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

Controller.RedirectToAction 方法返回一个RedirectToRouteResult Controller.Json 方法返回一个JsonResult。两个延伸ActionResult

我觉得您的重定向是没有得到你想要的原因是,它引导到一个只允许获取和你重定向后的动作。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top