ASP.NET核心中的全局字符串验证将列出一些字符



我有一个在.NET Core 3.1下运行的ASP.NET应用程序。

我想全局列出一些字符(例如ASCII NUL(0x0(、SOH(0x1(、退格…(

如果有这样的功能,我想重写一个字符串模型绑定器。

有什么简单的方法吗?

使用自己的模型绑定器处理字符串相当简单。

public class MyBinder : IModelBinderProvider, IModelBinder
{
public IModelBinder GetBinder(ModelBinderProviderContext context) =>
(context.Metadata.ModelType == typeof(string)) ? this : null;
public Task BindModelAsync(ModelBindingContext bindingContext)
{
var value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
if (value != ValueProviderResult.None)
{
bindingContext.ModelState.SetModelValue(bindingContext.ModelName, value);
var str = value.FirstValue;
if (bindingContext.ModelMetadata.ConvertEmptyStringToNull && string.IsNullOrWhiteSpace(str))
str = null;
// TODO strip out invalid characters here
bindingContext.Result = ModelBindingResult.Success(str);
}
return Task.CompletedTask;
}
}
options.ModelBinderProviders.Insert(0, new MyBinder());

如果您希望返回failure而不是静默地修改字符串。您可以实现一个验证属性,并记住在任何地方都使用它。。。

或者实现IModelValidatorProvider并将您的IModelValidator添加到每个绑定字符串值中。

相关内容

  • 没有找到相关文章

最新更新