public override void OnActionExecuting(ActionExecutingContext filterContext) { var stringBuilder = new StringBuilder(); var modelState = filterContext.Controller.ViewData.ModelState; if (!modelState.IsValid) { foreach (var item in modelState.Values) { foreach (var error in item.Errors) { stringBuilder.AppendLine(error.ErrorMessage); } } throw CodeMsg.InvalidArg().FillArgs(stringBuilder.ToString()).BuildError(); } var actionDescriptor = filterContext.ActionDescriptor; var controllerDescriptor = actionDescriptor.ControllerDescriptor; var args = filterContext.ActionParameters; var argDefInfo = actionDescriptor.GetParameters(); foreach (var argDef in argDefInfo) { if (argDef.IsDefined(typeof(ValidArgAttribute), false)) { var validArg = argDef.GetCustomAttributes(typeof(ValidArgAttribute), false)[0] as ValidArgAttribute; if (validArg?.Required == true && args[argDef.ParameterName] == null) { stringBuilder.AppendLine(validArg.Msg); } } if (argDef.ParameterType.IsPrimitive && args[argDef.ParameterName] == null) { stringBuilder.AppendLine($"{argDef.ParameterName}不能为空"); } } if (stringBuilder.Length > 0) { throw CodeMsg.InvalidArg().FillArgs(stringBuilder.ToString()).BuildError(); } base.OnActionExecuting(filterContext); }
public override void OnActionExecuting(HttpActionContext actionContext) { var stringBuilder = new StringBuilder(); var modelState = actionContext.ModelState; if (!modelState.IsValid) { foreach (var item in modelState.Values) { foreach (var error in item.Errors) { stringBuilder.AppendLine(error.ErrorMessage); } } throw CodeMsg.InvalidArg().FillArgs(stringBuilder.ToString()).BuildError(); } var actionDescriptor = actionContext.ActionDescriptor; var controllerDescriptor = actionDescriptor.ControllerDescriptor; var args = actionContext.ActionArguments; var argDefInfo = actionDescriptor.GetParameters(); foreach (var argDef in argDefInfo) { var validArg = argDef.GetCustomAttributes <ValidArgAttribute>().FirstOrDefault(); if (validArg != null) { if (validArg.Required && args[argDef.ParameterName] == null) { stringBuilder.AppendLine(validArg.Msg); } } else if (argDef.ParameterType.IsPrimitive && args[argDef.ParameterName] == null) { stringBuilder.AppendLine($"{argDef.ParameterName}不能为空"); } } if (stringBuilder.Length > 0) { throw CodeMsg.InvalidArg().FillArgs(stringBuilder.ToString()).BuildError(); } base.OnActionExecuting(actionContext); }