public override void OnActionExecuting(ActionExecutingContext filterContext) { //filterContext.RouteData.DataTokens //object parameter = filterContext.ActionParameters.GetValue(ParamName); //if (parameter == null) //{ // //得到类型 // var desciptor = filterContext.ActionDescriptor as ReflectedActionDescriptor; // if (desciptor == null) // { // return; // } // var parameterInfo = desciptor.MethodInfo.GetParameters().FirstOrDefault(o => o.Name.Equals(ParamName, StringComparison.OrdinalIgnoreCase)); //} object parameter = filterContext.GetActionParameterValue(ParamName); if (parameter == null || parameter.GetType().IsPrimitive) { return; } var p = parameter.GetType().GetProperty(PropertyName, Reflection.BindingFlags.IgnoreCase | Reflection.BindingFlags.Instance | Reflection.BindingFlags.Public); if (p == null) { return; } string propertyParamName = string.IsNullOrEmpty(PropertyParamName) ? PropertyName : PropertyParamName; string value = filterContext.HttpContext.Request[propertyParamName]; if (value == null) { value = filterContext.RouteData.Values[propertyParamName] as string; } if (!string.IsNullOrEmpty(value)) { try { if (Type.IsPrimitive || Type.Equals(typeof(string)) || Type.Equals(typeof(Decimal))) { p.SetValue(parameter, Convert.ChangeType(value, Type)); } else { var result = ParameterConvert.Convert(value, this.Type); p.SetValue(parameter, result); } } catch //(Exception ex) { } } //base.OnActionExecuting(filterContext); }