asp.net-mvc - 为字符串集合实现 IModelBinder
问题描述
实际上在我的 .NET Core 项目中,我使用一个简单的模型绑定器来修剪输入字符串
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 之间集中修剪逻辑。
解决方案
已解决,似乎 [FromBody] 必须需要一个 JsonConverter。更多信息,请访问https://stackoverflow.com/a/54663595/4963176
推荐阅读
- r - 我可以在 R 中使用具有起始值的 mapply 函数吗?
- c - 线程函数的Ansi C参数获取编译器错误
- python - 有效地测试一个项目是否在一个排序的字符串列表中
- python - 带有拆分字符和转义字符的 Python 拆分字符串
- python - 显示来自 URL 的图像
- java - java - 将参数作为系统变量传递,以便使用 `System.getenv` 读取
- opencv4android - 我是否需要在 Android 上为 OpenCV 的 Java 包装器调用 Mat 的发布方法?
- python - 即使条件满足,while循环也不会中断
- c# - 将行填充到我创建的数据集中?
- r - 如何修改/删除不符合列的正则表达式模式的 R 行?