当前位置: 首页 > news >正文

建设商城类网站多少钱热狗seo优化外包

建设商城类网站多少钱,热狗seo优化外包,做汽车脚垫版的网站,淮南市城乡建设委网站这个代码片段定义了一个自定义的 ASP.NET Core 过滤器(GuardModelStateAttribute),用于在控制器动作执行之前验证模型状态(ModelState)。如果模型状态无效,则构造一个 ProblemDetails 对象来描述错误&#…

这个代码片段定义了一个自定义的 ASP.NET Core 过滤器(GuardModelStateAttribute),用于在控制器动作执行之前验证模型状态(ModelState)。如果模型状态无效,则构造一个 ProblemDetails 对象来描述错误,并返回一个 BadRequest 响应。

代码片段:

/// <summary>
/// 验证 ModelState 是否有效
/// </summary>
public class GuardModelStateAttribute : ActionFilterAttribute
{// <summary>/// 在执行操作之前进行验证。/// 如果模型状态无效,则返回 BadRequest 响应。/// </summary>/// <param name="context">Action 执行上下文</param>public override void OnActionExecuting(ActionExecutingContext context){// 验证 ModelState 是否有效if (!context.ModelState.IsValid){// 构造 ProblemDetails 对象来构建错误响应var problemDetails = new ProblemDetails{Title = "Bad Request",                          // 错误标题Detail = "参数验证失败,请检查输入参数",           // 错误详情Status = (int)HttpStatusCode.BadRequest,        // HTTP 状态码Instance = context.HttpContext.Request.Path,    // 请求路径};// 遍历 ModelState 字典,将错误信息添加到 Extensions 字典中foreach (var key in context.ModelState.Keys){// 获取每个键对应的错误信息var errors = context.ModelState[key]?.Errors;// 如果没有错误信息,则跳过if (errors is not { Count: > 0 }) continue;// 遍历每个错误,并将其添加到 ProblemDetails 的 Extensions 字典中foreach (var error in errors){problemDetails.Extensions.Add(key, error.ErrorMessage);}}// 设置响应结果context.Result = new BadRequestObjectResult(problemDetails);}}
}

代码解读

  1. 类定义

    public class GuardModelStateAttribute : ActionFilterAttribute
    
    • GuardModelStateAttribute 继承自 ActionFilterAttribute,这是一个内置的过滤器接口,用于在执行控制器动作前后执行一些逻辑。
  2. 覆盖 OnActionExecuting 方法

    public override void OnActionExecuting(ActionExecutingContext context)
    
    • OnActionExecuting 方法是在控制器动作执行之前调用的。覆盖这个方法可以让我们在动作执行前做一些预处理工作。
  3. 验证模型状态

    if (!context.ModelState.IsValid)
    
    • ModelState.IsValid 是一个布尔属性,表示模型状态是否有效。如果为 false,表示模型状态无效,即请求中的数据未通过验证。
  4. 构造 ProblemDetails 对象

    var problemDetails = new ProblemDetails
    {Title = "Bad Request",Detail = "参数验证失败,请检查输入参数",Status = (int)HttpStatusCode.BadRequest,Instance = context.HttpContext.Request.Path,
    };
    
    • ProblemDetails 是一个标准的对象,用于描述 HTTP 错误响应。这里设置了错误标题、详细信息、HTTP 状态码(400 Bad Request)以及请求的路径。
  5. 收集并附加错误信息

    foreach (var key in context.ModelState.Keys)
    {var errors = context.ModelState[key]?.Errors;if (errors is not { Count: > 0 }) continue;foreach (var error in errors){problemDetails.Extensions.Add(key, error.ErrorMessage);}
    }
    
    • 遍历 ModelState 中的所有键值对,获取每个字段的验证错误信息,并将这些错误信息添加到 ProblemDetailsExtensions 字典中。
  6. 设置响应结果

    context.Result = new BadRequestObjectResult(problemDetails);
    
    • 设置 ActionExecutingContextResult 属性,返回一个包含 ProblemDetailsBadRequestObjectResult,这将导致控制器不再继续执行,并返回一个带有错误信息的 HTTP 响应。

作用

这个自定义过滤器的作用是:

  • 验证模型状态:在控制器动作执行之前验证请求中的数据是否满足验证规则。
  • 返回错误响应:如果数据验证失败,则构造一个包含详细错误信息的 ProblemDetails 对象,并返回一个 BadRequest 响应。
  • 简化错误处理:通过在过滤器中集中处理模型状态验证,可以减少在每个控制器动作中重复编写类似的错误处理逻辑。

使用方法

// Add services to the container.
#region 向容器中添加服务// 关闭默认模型验证过滤器
builder.Services.Configure<ApiBehaviorOptions>(options => options.SuppressModelStateInvalidFilter = true);builder.Services.AddControllers(options =>
{// 添加过滤器options.Filters.Add<GuardModelStateAttribute>();
})
.AddNewtonsoftJson(options =>
{options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss"; //格式化时间
});#endregion

要在控制器中使用这个过滤器,可以在控制器或动作方法上添加 [GuardModelState] 属性:

[ApiController]
[Route("[controller]")]
[GuardModelState] // 在控制器级别应用过滤器
public class MyController : ControllerBase
{[HttpGet("{id}")]public ActionResult Get(int id){// 控制器逻辑return Ok();}[HttpPost][GuardModelState] // 在动作方法级别应用过滤器public ActionResult Post([FromBody] MyModel model){// 控制器逻辑return Ok();}
}

总结

GuardModelStateAttribute 是一个自定义的 ASP.NET Core 过滤器,用于在控制器动作执行前验证模型状态,并在模型状态无效时返回一个带有详细错误信息的 BadRequest 响应。通过使用这个过滤器,可以简化错误处理逻辑,并提高代码的可维护性和可读性。

http://www.jinmujx.cn/news/119983.html

相关文章:

  • 网站建设为了什么最新新闻消息
  • 网站建立的具体步骤google 推广优化
  • 做免费导航网站熊猫关键词工具官网
  • 北京微信网站建设公司网络营销专业可以干什么工作
  • 网站开发到上线sem外包
  • 建三江建设局网站百度竞价推广方案
  • java 做网站 模板在哪可以下企业培训体系搭建
  • 网站开发流程比较合理常熟seo网站优化软件
  • 建设网站 安全事项厦门关键词排名优化
  • 甘肃省兰州市城乡建设厅网站网络营销的核心是什么
  • 有哪些网站可以做任务返现江北seo页面优化公司
  • 有没有正规的毕设代做网站创建网站的软件
  • 深圳做网站的公司哪家好网盘网页版登录入口
  • 郴州网站seo优化重庆森林经典台词独白
  • 北京海淀建设银行数据中心北京网站优化策略
  • 郴州网站优化百度登录个人中心官网
  • 如何做网站模版最好的搜索引擎排名
  • 繁昌县网站开发如何制作付费视频网站
  • 温州网站建设首选龙诚互联自己手机怎么免费做网站
  • 贵州企业网站建设招商关键词排名查询工具免费
  • 购物软件网站优化工具
  • 网站建设需要汇报哪些内容杭州网站搜索排名
  • 动态网站开发第一步福州网站排名
  • 网站建设案例教程seo技巧seo排名优化
  • 营销型网站建设电子书企业qq和个人qq有什么区别
  • 中国建设工程监理协会网站大型网站建站公司
  • 传奇私服网站做ssl软文推广哪个平台好
  • 给我播放个免费的片快速排名优化推广手机
  • 万户做的网站安全吗软文推广文章范文
  • 乐清网站制作公司独立站seo建站系统