Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 所有动作控制器的重定向';s_C#_Asp.net Mvc_Asp.net Mvc 4_Razor - Fatal编程技术网

C# 所有动作控制器的重定向';s

C# 所有动作控制器的重定向';s,c#,asp.net-mvc,asp.net-mvc-4,razor,C#,Asp.net Mvc,Asp.net Mvc 4,Razor,只有一个控制中心有一系列的动作。它还有一个私有方法bool IsFinish(),它返回系统的状态。在某个阶段(即当IsFinish start返回true时),任何可调用方法重定向到public ActionResult()的内容都是必需的。原则上,我不在乎这会导致什么结果-在当前控制器或其他。概述转发给it的所有操作 如何实现这一点?您可以使用asp.net mvc的一个组件来实现这一点。动作筛选器是一个属性,您可以将其应用于控制器动作--或整个控制器--以修改动作的执行方式,例如: pub

只有一个控制中心有一系列的动作。它还有一个私有方法bool IsFinish(),它返回系统的状态。在某个阶段(即当IsFinish start返回true时),任何可调用方法重定向到public ActionResult()的内容都是必需的。原则上,我不在乎这会导致什么结果-在当前控制器或其他。概述转发给it的所有操作

如何实现这一点?

您可以使用asp.net mvc的一个组件来实现这一点。动作筛选器是一个属性,您可以将其应用于
控制器
动作
--或整个
控制器
--以修改动作的执行方式,例如:

public class RedirectFilterAttribute : ActionFilterAttribute
{
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            // get the home controller in a safe cast
            var homeController = filterContext.Controller as Controller;

            // check if it is home controller and not Result action
            if (homeController != null && filterContext.ActionDescriptor.ActionName != "Result")
            {
                if (homeController.IsFinish())
                {
                    filterContext.Result = new RedirectToRouteResult(
                        new RouteValueDictionary 
                        { 
                            { "controller", "Home" }, 
                            { "action", "Result" } 
                        });
                }
            }

            base.OnActionExecuting(filterContext);
        }
}
并将其应用到控制器上:

[RedirectFilter] // apply to all actions
public class HomeController : Controller
{

    public ActionResult Home()
    {
        /* your action's code */
    }

    public ActionResult Home()
    {
        /* your action's code */
    }

    public ActionResult Home()
    {
        /* your action's code */
    }

    public ActionResult Result()
    {        
        return View();
    }
}
您可以使用asp.NETMVC的一个应用程序来完成这项工作。动作筛选器是一个属性,您可以将其应用于
控制器
动作
--或整个
控制器
--以修改动作的执行方式,例如:

public class RedirectFilterAttribute : ActionFilterAttribute
{
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            // get the home controller in a safe cast
            var homeController = filterContext.Controller as Controller;

            // check if it is home controller and not Result action
            if (homeController != null && filterContext.ActionDescriptor.ActionName != "Result")
            {
                if (homeController.IsFinish())
                {
                    filterContext.Result = new RedirectToRouteResult(
                        new RouteValueDictionary 
                        { 
                            { "controller", "Home" }, 
                            { "action", "Result" } 
                        });
                }
            }

            base.OnActionExecuting(filterContext);
        }
}
并将其应用到控制器上:

[RedirectFilter] // apply to all actions
public class HomeController : Controller
{

    public ActionResult Home()
    {
        /* your action's code */
    }

    public ActionResult Home()
    {
        /* your action's code */
    }

    public ActionResult Home()
    {
        /* your action's code */
    }

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