实际上,在我的.NET核心项目中,我使用了一个简单的模型绑定器来修剪输入字符串
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使用它,它可以很好地处理字符串类型的输入。但是,我注意到在输入时它不会触发,我有一个字符串集合,如下所示
public IActionResult CollectionTrimTest([FromBody] List<string> values)为了执行它,我想我应该使用类似这样的东西
if (context.Metadata.IsCollectionType)
return new BinderTypeModelBinder(typeof(CollectionModelBinder));但是我真的不知道如何实现CollectionModelBinder来裁剪基于字符串集合的结果。当然,将StringModelBinder和CollectionModelBinder之间的修剪逻辑集中起来是非常值得赞赏的。
发布于 2019-05-09 01:47:02
解决了,看起来FromBody必须需要一个JsonConverter。有关更多信息,请访问https://stackoverflow.com/a/54663595/4963176。
https://stackoverflow.com/questions/56019626
复制相似问题