2021-01-14关于自定义的ModelBinding、HttpOptions以及输入验证

本文详细介绍了在.NET中如何实现自定义的ModelBinding,用于转化route数据到API参数。同时,讨论了HttpOptions在API发现中的应用。接着,深入探讨输入验证的重要性,包括验证目标、步骤和不同验证规则的实现,如Data Annotations、自定义Attribute以及实现IValidatableObject接口。当验证失败时,系统会返回422 Unprocessable Entity错误,并提供详细的验证错误信息。.NET Core 2.x以后,可以通过[ApiController]自动处理验证。文章还比较了三种验证规则的优先级和适用范围。
摘要由CSDN通过智能技术生成

自定义的ModelBinding

该modelbinding主要用于将route中的相对应数据转化为所binding的字段属性数组。

    /// <summary>
    /// 自定义model binding,继承ImodelBinder
    /// </summary>
    public class ArrayModelBinder : IModelBinder
    {
        /// <summary>
        /// 必须实现该接口
        /// </summary>
        /// <param name="bindingContext">使用Modelbinding的属性</param>
        /// <returns></returns>
        public Task BindModelAsync(ModelBindingContext bindingContext)
        {
            //如果使用该modelbinding的不是enumerable,提示失败
            if (!bindingContext.ModelMetadata.IsEnumerableType)
            {
                bindingContext.Result = ModelBindingResult.Failed();
                return Task.CompletedTask;
            }
            //从context中取出需要的数据并转化为字符串
            var value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName).ToString();

            //字符串为空返回成功,但信息为
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值