ASP.NET MVC 通過ActionFilter獲取請求的參數


using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Reflection;
using System.Threading;
using System.Threading.Tasks;
using System.Web;
using System.Web.Http.Controllers;
using System.Web.Mvc;

namespace JMB.Web
{
    public class ParameterValidationActionFilter : IActionFilter
    {
        public void OnActionExecuted(ActionExecutedContext filterContext)
        {
        }

        public void OnActionExecuting(ActionExecutingContext filterContext)
        {
            //var param  =  filterContext.RequestContext.HttpContext.Request.Params;
            var paramss = filterContext.ActionParameters;
            if (paramss != null && paramss.Count > 0)
            {
                foreach (var para in paramss)
                {
                    var formCollection = para.Value as FormCollection;
                    if (formCollection != null) //是否是post請求
                    {
                        var keys = formCollection.AllKeys;
                        if (keys != null && keys.Count() > 0)
                        {
                            //獲取所有參數
                            foreach (var item in keys)
                            {
                                var result = formCollection.GetValue(item).AttemptedValue ?? "";
                                // TO DO

                            }

                        }

                    }
                    else //get請求
                    {
                        if (para.Value != null)
                        {
                            //這個也有能是 (string str1,string str2)格式的話就是獲取每個參數
                            // 如果是 (QueryModel model) 的話 就是QueryModel對象
                            var result = para.Value?.ToString() ?? "";

                            
                        }

                    }
                }

            }

           
        }

    }
}

然后在web網站下的App_Start文件夾FilterConfig類里添加ParameterValidationActionFilter 過濾器

using System.Web.Mvc;

namespace JMB.Web
{
    public class FilterConfig
    {
        public static void RegisterGlobalFilters(GlobalFilterCollection filters)
        {
            filters.Add(new HandleErrorAttribute());
            filters.Add(new ParameterValidationActionFilter());
        }
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM