首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为字符串集合实现IModelBinder

为字符串集合实现IModelBinder
EN

Stack Overflow用户
提问于 2019-05-07 17:33:29
回答 1查看 148关注 0票数 0

实际上,在我的.NET核心项目中,我使用了一个简单的模型绑定器来修剪输入字符串

代码语言:javascript
复制
public class StringModelBinder : IModelBinder
{
    public Task BindModelAsync(ModelBindingContext bindingContext)
    {
        if (bindingContext == null)
            throw new ArgumentNullException(nameof(bindingContext));

        ValueProviderResult valueProviderResult = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
        if (valueProviderResult != ValueProviderResult.None)
        {
            bindingContext.ModelState.SetModelValue(bindingContext.ModelName, valueProviderResult);

            string valueAsString = string.IsNullOrWhiteSpace(valueAsString) ? null : valueAsString.Trim();

            bindingContext.Result = ModelBindingResult.Success(valueAsString);
        }

        return Task.CompletedTask;
    }
}

我通过IModelBinderProvider使用它,它可以很好地处理字符串类型的输入。但是,我注意到在输入时它不会触发,我有一个字符串集合,如下所示

代码语言:javascript
复制
public IActionResult CollectionTrimTest([FromBody] List<string> values)

为了执行它,我想我应该使用类似这样的东西

代码语言:javascript
复制
if (context.Metadata.IsCollectionType)
    return new BinderTypeModelBinder(typeof(CollectionModelBinder));

但是我真的不知道如何实现CollectionModelBinder来裁剪基于字符串集合的结果。当然,将StringModelBinder和CollectionModelBinder之间的修剪逻辑集中起来是非常值得赞赏的。

EN

回答 1

Stack Overflow用户

发布于 2019-05-09 01:47:02

解决了,看起来FromBody必须需要一个JsonConverter。有关更多信息,请访问https://stackoverflow.com/a/54663595/4963176

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56019626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档