如何要么返回JSON或RedirectToAction?
-
26-09-2019 - |
题
我有一个处理法,我会要么喜欢从上另一个条件的一个条件或重定向返回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
。
我觉得您的重定向是没有得到你想要的原因是,它引导到一个只允许获取和你重定向后的动作。
不隶属于 StackOverflow