0

いくつかの関数を実行しているクラスがあり、エラーが発生する場合があります。エラーコントローラーにリダイレクトしたいのですが、これは別のクラスにあるためできません。

私のerrorContorllerに移動するためにredirectToActionまたは同様のものを使用できる方法はありますか?

これを試しましたが、リダイレクトできませんでした。コードを実行しただけで何も起こりませんでした。

public ActionResult Error(Dictionary<string, string> findError)
{
   TempData["Error"] = findError.Keys.First();
   TempData["ErrorMessage"] = findError.Values.First();
   return RedirectToAction("Error", "CustomError"); 
}

エラーコントローラー:

namespace MvcResComm.Controllers
{
    public class CustomErrorController : Controller
    {
        //
        // GET: /Error/

        public ActionResult Index()
        {
            return View();
        }

        public ActionResult Error()
        {
            string message = (string)TempData["ErrorMessage"];
            string ex = (string)TempData["Error"];
            ViewBag.Message = "Error";
            return View(new ErrorModel(ex, message));
        }
    }
}
4

1 に答える 1

1

これは私にとってはうまくいきます。

アクション フィルター

public class HandleCustomErrorAttribute : System.Web.Mvc.HandleErrorAttribute
{
    public override void OnException(System.Web.Mvc.ExceptionContext filterContext)
    {
        filterContext.ExceptionHandled = true;

            var routeData = new RouteData();
            routeData.Values["controller"] = "Controller Name";
            routeData.Values["action"] = "Action Method Name";
            routeData.DataTokens["area"] = "Area Name"; // Optional

            IController errorsController = new Controllers.ErrorController();
            var rc = new RequestContext(new HttpContextWrapper(HttpContext.Current), 
                                                                           routeData);
            errorsController.Execute(rc);

        base.OnException(filterContext);
    }
}

これで、これAction Filterを完全に、または問題に直面Controllerしている特定の場所 (コントローラー レベルまたはアクション メソッド レベル) に使用できます。Action Method

コントローラーレベル

[HandleCustomError(Order = 5)]
public class MyController : Controller
{
}

これは、Cont5roller の すべてのアクション メソッドに適用されます。


処置方法 レベル

public class MyController : Controller
{
     [HandleCustomError(Order = 5)]
     public ActionResult ActionMethod()
     {
         //Some code
     }   
}

これは、コントローラーの特定のアクション メソッドに適用されます。

于 2013-07-12T11:37:13.150 に答える