diff --git a/DigitalLearningSolutions.Data/Enums/Enumeration.cs b/DigitalLearningSolutions.Data/Enums/Enumeration.cs index 2e46e9ebe0..81f65ba820 100644 --- a/DigitalLearningSolutions.Data/Enums/Enumeration.cs +++ b/DigitalLearningSolutions.Data/Enums/Enumeration.cs @@ -47,10 +47,14 @@ public override bool Equals(object? obj) public static bool TryGetFromIdOrName( string idOrName, - out T enumeration) + out T enumeration, + bool ignoreCase = false + ) where T : Enumeration { - return TryParse(item => item.Name == idOrName, out enumeration) || + var comparison = + ignoreCase ? StringComparison.CurrentCultureIgnoreCase : StringComparison.CurrentCulture; + return TryParse(item => string.Equals(item.Name, idOrName, comparison), out enumeration) || int.TryParse(idOrName, out var id) && TryParse(item => item.Id == id, out enumeration); } diff --git a/DigitalLearningSolutions.Web/ModelBinders/EnumerationModelBinder.cs b/DigitalLearningSolutions.Web/ModelBinders/EnumerationModelBinder.cs index 691eaf7ae6..b806f353fd 100644 --- a/DigitalLearningSolutions.Web/ModelBinders/EnumerationModelBinder.cs +++ b/DigitalLearningSolutions.Web/ModelBinders/EnumerationModelBinder.cs @@ -25,7 +25,7 @@ public Task BindModelAsync(ModelBindingContext bindingContext) { bindingContext.Result = ModelBindingResult.Success(default(T)); } - else if (Enumeration.TryGetFromIdOrName(enumerationName.FirstValue, out var result)) + else if (Enumeration.TryGetFromIdOrName(enumerationName.FirstValue, out var result, true)) { bindingContext.Result = ModelBindingResult.Success(result); }