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