New version of Boolean Binder Provider (#8413)

* New version of Boolean Binder Provider
* Use Convert.ToBoolean(string) rather than ValueProviderResult.ConvertTo(bool)
This commit is contained in:
Matteo Piovanelli
2020-09-11 11:02:53 +02:00
committed by GitHub
parent 6dc4f62a98
commit b528ecd1e0
2 changed files with 28 additions and 0 deletions

View File

@@ -0,0 +1,27 @@
using System;
using System.Collections.Generic;
using System.Web.Mvc;
namespace Orchard.Mvc.ModelBinders {
public class BooleanBinderProvider : IModelBinderProvider, IModelBinder {
public IEnumerable<ModelBinderDescriptor> GetModelBinders() {
return new[] {
new ModelBinderDescriptor {
ModelBinder = this,
Type = typeof(bool)
}
};
}
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) {
var value = false;
try {
value = Convert.ToBoolean(bindingContext.ValueProvider.GetValue(bindingContext.ModelName).AttemptedValue);
} catch {
bindingContext.ModelState.AddModelError(bindingContext.ModelName, new FormatException());
}
return value;
}
}
}

View File

@@ -182,6 +182,7 @@
<Compile Include="Data\Migration\Schema\DropUniqueConstraintCommand.cs" />
<Compile Include="Environment\Extensions\Models\LifecycleStatus.cs" />
<Compile Include="Environment\ShellBuilders\ICompositionStrategy.cs" />
<Compile Include="Mvc\ModelBinders\BooleanBinderProvider.cs" />
<Compile Include="Mvc\Updater.cs" />
<Compile Include="Recipes\Models\ConfigurationContext.cs" />
<Compile Include="Recipes\Models\RecipeBuilderStepConfigurationContext.cs" />