[ad_1]
以下の条件を実装した ActionResults がいくつかあります。
C#
public async Task<ActionResult> Status(int Id) { if (Id <= 0) { TempData["Errors"] = "Invalid data"; return RedirectToAction("Error", "Dashboard"); } .... }
この完全な if 条件を別のメソッドに移動し、必要な場所で呼び出したいと思います。 ご意見をお聞かせください
私が試したこと:
以下は私が試したものですが、リダイレクトは機能しません
C#
public async Task<ActionResult> Status(int Id) { UtilityHelpder helper = new UtilityHelper(); await helper.IdCheck(this, Id); ... } public class UtilityHelper { public async Task IdCheckHelper(Controller controller, int Id) { if (Id <= 0) { controller.TempData["Errors"] = "Invalid data"; controller.HttpContext.Response.Redirect("/Dashboard/Error"); } } }
解決策 1
コードの問題は、HttpContext.Response.Redirect() を使用して「/Dashboard/Error」にリダイレクトしていることです。 このメソッドは別のクラスから呼び出しているため、現在のリクエストの URL にアクセスできません。これがリダイレクトが機能しない理由です。
HttpContext.Response.Redirect() を使用する代わりに、IdCheckHelper メソッドから RedirectToActionResult を返すことができます。
例:
C#
if (Id <= 0) { controller.TempData["Errors"] = "Invalid data"; return new RedirectToActionResult("Error", "Dashboard", null); } return null;
[ad_2]
コメント