Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.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# 如何使用querystring从ActionFilterAttribute请求重定向_C#_Redirect_Model View Controller_Actionfilterattribute - Fatal编程技术网

C# 如何使用querystring从ActionFilterAttribute请求重定向

C# 如何使用querystring从ActionFilterAttribute请求重定向,c#,redirect,model-view-controller,actionfilterattribute,C#,Redirect,Model View Controller,Actionfilterattribute,我必须将任何请求重定向到规范URL。为了解决此任务,我使用派生的ActionFilterAttribute,如下面的代码: public class CheckToRedirectFilterAttribute : ActionFilterAttribute { public bool ExactUrl { get; set; } = true; public override void OnActionExecuting(ActionExecutingContext filte

我必须将任何请求重定向到规范URL。为了解决此任务,我使用派生的ActionFilterAttribute,如下面的代码:

public class CheckToRedirectFilterAttribute : ActionFilterAttribute
{
    public bool ExactUrl { get; set; } = true;
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        base.OnActionExecuting(filterContext);

        ActionResult redirect = filterContext.RouteData.RedirectToNewMap();
        if (redirect == null && this.ExactUrl) {
            var urlHelper = new UrlHelper(filterContext.RequestContext);
            var routeValues = filterContext.RouteData.Values;
            foreach (var a in filterContext.ActionParameters)
            {
                if (!routeValues.ContainsKey(a.Key))
                    routeValues.Add(a.Key, a.Value);
            }
            var canonicUrl = urlHelper.Action(filterContext.ActionDescriptor.ActionName, filterContext.ActionDescriptor.ControllerDescriptor.ControllerName, filterContext.RouteData.Values);
            if (filterContext.HttpContext.Request.RawUrl.ToLower() != canonicUrl)
                redirect = new RedirectResult(canonicUrl.ToLower());
        }
        if (redirect != null)
        {
            filterContext.Result = redirect;
        }
    }
}
然后我在动作方法上使用这个属性:

public class HomeController : Controller
{
    [CheckToRedirectFilter]
    public ActionResult Index()
    {
        return View();
    }
}

你的问题是什么?如果您显示的代码引发异常,请包含异常文本。我发布了任务的解决方案。我想这个样品会对其他一些人有所帮助