6

ある条件で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");答えで提案されているようにしようとしましたが、それは何もしません。リダイレクト先のアクションのブレークポイントがヒットしません。

4

4 に答える 4

3

変更する必要があります

RedirectToAction("Index", "Group"); 

return RedirectToAction("Index", "Group"); 
于 2010-05-14T09:34:43.740 に答える
0

欠落しているreturnステートメント:

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

Controller.RedirectToActionメソッドはを返し、RedirectToRouteResultメソッド はController.Jsonを返しますJsonResult。両方とも拡張しActionResultます。

于 2010-05-14T09:37:38.423 に答える
0

RedirectResultを返します。この文字列を変更します

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

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

そして、すべてが正常に動作します。

于 2010-05-14T09:36:14.447 に答える
0

リダイレクトが目的の場所に到達しない理由は、Getsのみを受け入れるアクションにリダイレクトされており、投稿をリダイレクトしているためだと思います。

于 2010-05-14T11:22:28.797 に答える