Algunos funcionamiento del filtro

 

using Microsoft.AspNetCore.Mvc.Filters;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace WebApplication2
{
    public class HeaderAttribute:ActionFilterAttribute
    {
        public string Name { get; set; }
        public string Value { get; set; }

        public override void OnActionExecuted(ActionExecutedContext context)
        {
            if (!string.IsNullOrEmpty(Name) && !string.IsNullOrEmpty(Value))
            {
                context.HttpContext.Response.Headers.Add(Name, Value);
                return;
            }
        }
    }
}

 

//////////////////////////////////////////////////////////////////
//
//   PROGRAMMING ASP.NET CORE
//   Dino Esposito
//   
//   Ch04 - ASP.NET MVC Controllers
//   Simple
//

using System;
using System.Globalization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc.Filters;

namespace Ch04.Simple.Common
{
    [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
    public class CultureAttribute : ActionFilterAttribute
    {
        public string Name { get; set; }
        public static string CookieName => "_Culture";

        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            var culture = Name;
            if (string.IsNullOrEmpty(culture))
                culture = GetSavedCultureOrDefault(filterContext.HttpContext.Request);

            // Set culture on current thread
            SetCultureOnThread(culture);

            // Proceed as usual
            base.OnActionExecuting(filterContext);
        }

        public static void SavePreferredCulture(HttpResponse response, string language,
            int expireDays = 1)
        {
            var cookieOptions = new CookieOptions
            {
                Expires = DateTime.UtcNow.AddDays(expireDays)
            };
            response.Cookies.Append(CookieName, language, cookieOptions);
        }

        public static string GetSavedCultureOrDefault(HttpRequest httpRequestBase)
        {
            var culture = httpRequestBase.Cookies[CookieName] ?? CultureInfo.CurrentCulture.Name;
            return culture;
        }

        private static void SetCultureOnThread(string language)
        {
            var cultureInfo = new CultureInfo(language);
            CultureInfo.CurrentCulture = cultureInfo;
            CultureInfo.CurrentUICulture = cultureInfo;
        }
    }
}
//////////////////////////////////////////////////////////////////
//
//   PROGRAMMING ASP.NET CORE
//   Dino Esposito
//   
//   Ch04 - ASP.NET MVC Controllers
//   Simple
//

using Microsoft.AspNetCore.Mvc.Abstractions;
using Microsoft.AspNetCore.Mvc.ActionConstraints;
using Microsoft.AspNetCore.Routing;

namespace Ch04.Simple.Common
{
    public class AjaxOnlyAttribute : ActionMethodSelectorAttribute
    {
        public override bool IsValidForRequest(RouteContext routeContext, ActionDescriptor action)
        {
            return routeContext.HttpContext.Request.IsAjaxRequest();
        }
    }
}


//////////////////////////////////////////////////////////////////
//
//   PROGRAMMING ASP.NET CORE
//   Dino Esposito
//   
//   Ch04 - ASP.NET MVC Controllers
//   Simple
//

using System;
using Microsoft.AspNetCore.Http;

namespace Ch04.Simple.Common
{
public static class HttpRequestExtensions
{
    public static bool IsAjaxRequest(this HttpRequest request)
    {
        if (request == null)
            throw new ArgumentNullException(nameof(request));

        if (request.Headers != null)
            return request.Headers["X-Requested-With"] == "XMLHttpRequest";
        return false;
    }
}
}

 

Publicados 496 artículos originales · ganado elogios 76 · Vistas de 300.000 +

Supongo que te gusta

Origin blog.csdn.net/dxm809/article/details/104768496
Recomendado
Clasificación