public class MyBinder : IModelBinder
{
public Task BindModelAsync(ModelBindingContext bindingContext)
{
var modelName = bindingContext.ModelName;
// Try to fetch the value of the argument by name
var valueProviderResult = bindingContext.ValueProvider.GetValue(modelName);
if (valueProviderResult == ValueProviderResult.None)
{
return Task.CompletedTask;
}
bindingContext.ModelState.SetModelValue(modelName, valueProviderResult);
var value = valueProviderResult.FirstValue;
if (!short.TryParse(value, out var id))
{
// add the logical compare the value and so on
bindingContext.ModelState.TryAddModelError(
modelName, value+" is not valid for short.");
return Task.CompletedTask;
}
return Task.CompletedTask;
}
}
应用modelbinder:
[ModelBinder(BinderType = typeof(MyBinder))] short someValue
1条答案
按热度按时间2admgd591#
这是一个模型绑定错误而不是模型验证错误,你可以在这里尝试设置:
测试结果:
更详细的错误信息,需要自定义模型绑定器,例如:
应用modelbinder:
结果: