【发布时间】:2019-11-12 06:27:40
【问题描述】:
出于 DRY 的原因,我正在练习属性中的验证,但我得到了一些 Web Api 的示例,我不知道是否有办法返回带有无效数据和模型状态错误的视图,而不是 API 中使用的 BadRequestObjectResult。
我已经阅读了有关它的官方文档,但我不明白它在视图的情况下是如何实现的。
我正在使用具有 2 个输入的基本模型在 EF Core 实体中添加数据以测试此属性过滤器。我的目标是为这个案例获得一些通用的东西,因为我对 Web Api 理解它。
提前感谢您能给我的任何帮助。
我想在 IActionResult 中更改它:
if(!ModelState.IsValid)
return View(ModelState)
类似这样的属性类:
public class ValidateModelAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext context)
{
if (!context.ModelState.IsValid)
{
// I know that this line indicates a BadRequestObjectResult
// but I don't know how to returning like view if
// the Web App use razor pages
context.Result = new BadRequestObjectResult(context.ModelState);
}
base.OnActionExecuting(context);
}
这是示例的实际响应(但我想使用 MVC 页面返回错误和模型数据):
{ "LastName":["The LastName field is required."],"FirstName":["The FirstName"]}
【问题讨论】:
-
所以不是从控制器发送它,而是要为它创建过滤器?
-
你确定继承自
ActionFilterAttribute有意义吗? -
@Vishalmodi 是的先生,但不要像 BadRequest() 那样返回
-
@JohnB 这是一些网站的示例代码
标签: c# .net-core asp.net-core-2.1 asp.net-mvc-filters