我在.net核心2.x项目中工作。 我在每个动作中写下以下代码来验证我的模型状态。
if (ModelState.IsValid)
{
// Do something
}
else
{
// Return Modelstate Error
}
我想知道避免在每个动作中重复这个条件的最佳做法是什么。 我想在到达操作之前验证modelstate,如果modelstate无效,则返回相应的错误消息。
更新
请注意。我的动作是简单的Api动作,我只想以字符串数组的形式在HttpContext Body中返回错误(在我的模型中)。
例如Model Property。
[Required(ErrorMessage = "Fill the name Please !!!")]
public string FirstName { get; set; }
例如行动。
[HttpPost]
public void Create([FromBody]MyModel model)
{
if (ModelState.IsValid)
{
// Do something
}
else
{
// Return Modelstate Error
}
}
答案 0 :(得分:2)
尝试这样的想法
public class ModelStateValidationFilter : ActionFilterAttribute
{
public string ErrorPage;
public override void OnActionExecuting(ActionExecutingContext context)
{
if (!context.ModelState.IsValid)
{
//return error result
List<string> list = (from modelState in context.ModelState.Values from error in modelState.Errors select error.ErrorMessage).ToList();
context.Result = new BadRequestObjectResult(list);
//or redirect to some result
context.Result = new RedirectToRouteResult(ErrorPage);
//or do whatever you need
}
base.OnActionExecuting(context);
}
}
并像这样添加
控制器上的
[ModelStateValidationFilter(ErrorPage = "somepage")]
public class SomeController : Controller
行动
[ModelStateValidationFilter(ErrorPage = "somepage")]
public IActionResult SomeAction(somemodel model)
或通过启动添加到所有