2016-12-24 4 views
5

を無視なっている:私は他のブロック(デバッグ)にコードジャンプをするときAspNetCore MVC - リターンRedirectToActionは、私は以下のような作用を有する

[HttpGet] 
public IActionResult SendEmailVerificationCode(int userId) 
{ 
    SpaceUser user = userManager.FindByIdAsync(userId).Result; 
    bool taskComleted = SendEmailVerificationLink(userId).IsCompleted; 
    if (taskComleted) 
    { 
     AddToErrorData(InfoMessages.EmailVerificationLinkSent_Params, user.Email); 
     return RedirectToAction(nameof(HomeController.Index), "Home"); 
    } 
    else 
    { 
     return RedirectToAction("EmailNotConfirmed", new { userId = user.Id }); 
    } 
} 

それがであるEmailNotConfirmedアクションにリダイレクトします同じコントローラ。しかし、HomeControllerIndexアクションにリダイレクトされません。代わりに、ブラウザはAccount/SendEmailVerificationCodeにとどまり、空白のページを表示します。

HomeController.Indexは以下の通りです:

[HttpGet] 
public IActionResult Index() 
{ 
    return View(); 
} 

私はこれらを試してみました:初めSendEmailVerificationCodeアクションで

  • は非同期でしたが、HomeController.Indexませんでした。だから両方とも非同期であると宣言した。
  • その後、私はasyncの両方の宣言を削除しました。
  • 私はreturn RedirectToAction("Index", "Home");を試しました。
  • SendEmailVerificationCodeHttpPost属性を有する。私はHttpGetに変更しました。

別のコントローラのアクションにリダイレクトするにはどうすればよいですか?
任意の助けいただければ幸いです。

PS:私は今、しばらくの間、この問題についての研究をやっていると、私のような質問のためのソリューションを読んだ:
MVC RedirectToAction is not working properly
RedirectToAction gets ignored

しかし、これらのどれか行動に関する質問Ajaxリクエストの後にリダイレクトされていないと私は助けてくれました。

ありがとうございました。

+0

{/ 'routes.MapRoute( "MainIndex"、「{コントローラ}としてStartup.cs''に新しいルートを追加しようとしました(MainIndex ");'しかし、それは動作しませんでした。 – Chakian

答えて

5

アプリケーションにいくつかのログを追加することで問題が発生しました。実際の問題は隠されていたことが判明しました。

私はカスタマイズされたエラーメッセージを保存するためにTempDataを使用していましたが、質問に表示されていたAddToErrorData関数を使用していました。

AspNetCoreでは、インターフェイスと共にSerializableの属性が消滅しました。したがって、TempDataは私のカスタムIListオブジェクトリストをシリアル化できませんでした。

TempData[ConstantParameters.ErrorData] = _errorData;TempData[ConstantParameters.ErrorData] = JsonConvert.SerializeObject(_errorData);に変更したときに、リダイレクトの問題が解決されました。参考

:私はまたとしてTempDataを取得する行を変更しなければならなかった:_errorData = JsonConvert.DeserializeObject<ErrorDataList>(TempData[ConstantParameters.ErrorData].ToString());

+1

このタイプの問題を見るのは私には苦労し、その原因は完全に隠されて無関係です。現代的なMicrosoft製品のもう一つの根本的な問題。彼らはあまりにも一般的になりつつあります。 – EthR

関連する問題