Dyl*_*anB 7 asp.net-core-mvc dnx asp.net-core
我有一个自定义模型绑定器,用于REST API,如下所示:
public class CustomQueryModelBinder : IModelBinder
{
public Task<ModelBindingResult> BindModelAsync(ModelBindingContext bindingContext)
{
if (!String.IsNullOrWhiteSpace(bindingContext.ModelName) && bindingContext.ModelType == typeof(short) && bindingContext.ValueProvider.GetValue(bindingContext.ModelName) != null)
{
short value;
var val = bindingContext.ValueProvider.GetValue(bindingContext.ModelName).FirstValue as string;
if (String.IsNullOrWhiteSpace(val))
{
return ModelBindingResult.SuccessAsync(bindingContext.ModelName, val);
}
else if (Int16.TryParse(val, out value) && value >= 0)
{
return ModelBindingResult.SuccessAsync(bindingContext.ModelName, value);
}
else
{
bindingContext.ModelState.AddModelError(bindingContext.ModelName, "The value is invalid.");
}
}
return ModelBindingResult.FailedAsync(bindingContext.ModelName);
}
}
Run Code Online (Sandbox Code Playgroud)
并且在URI中未指定自定义值的情况下,它应默认为有效值(大于0),但它始终默认为0,即使控制器如下所示:
public async Task<IActionResult> GetAsync(
[ModelBinder(BinderType = typeof(CustomQueryModelBinder))]short value = 100,
Run Code Online (Sandbox Code Playgroud)
这里的基本值应该是从100它返回时设置为默认值.nullModelBinder
然而,这种情况并没有发生,并且0在System.ArgumentOutOfRangeException尝试进行Get时会不断返回.
我们正在使用RC1.
| 归档时间: |
|
| 查看次数: |
264 次 |
| 最近记录: |