diff --git a/Web/Edubase.Data/Edubase.Data.csproj b/Web/Edubase.Data/Edubase.Data.csproj
index 11a87de3a..77824efc9 100644
--- a/Web/Edubase.Data/Edubase.Data.csproj
+++ b/Web/Edubase.Data/Edubase.Data.csproj
@@ -73,7 +73,7 @@
..\packages\EntityFramework.6.5.1\lib\net45\EntityFramework.SqlServer.dll
- ..\packages\FluentValidation.11.9.2\lib\netstandard2.0\FluentValidation.dll
+ ..\packages\FluentValidation.11.10.0\lib\netstandard2.0\FluentValidation.dll
..\packages\Microsoft.AspNet.Identity.Core.2.2.4\lib\net45\Microsoft.AspNet.Identity.Core.dll
diff --git a/Web/Edubase.Data/packages.config b/Web/Edubase.Data/packages.config
index 57cb74909..3f00cd009 100644
--- a/Web/Edubase.Data/packages.config
+++ b/Web/Edubase.Data/packages.config
@@ -1,7 +1,7 @@
-
+
diff --git a/Web/Edubase.Web.UI/Areas/Establishments/Controllers/EstablishmentController.cs b/Web/Edubase.Web.UI/Areas/Establishments/Controllers/EstablishmentController.cs
index e31218c5f..c7e7f388e 100644
--- a/Web/Edubase.Web.UI/Areas/Establishments/Controllers/EstablishmentController.cs
+++ b/Web/Edubase.Web.UI/Areas/Establishments/Controllers/EstablishmentController.cs
@@ -33,7 +33,6 @@
using Edubase.Web.UI.Helpers;
using Edubase.Web.UI.Models;
using Edubase.Web.UI.Validation;
-using FluentValidation.Mvc;
using MoreLinq;
using ET = Edubase.Services.Enums.eLookupEstablishmentType;
using CreateSteps = Edubase.Web.UI.Areas.Establishments.Models.CreateEstablishmentViewModel.eEstabCreateSteps;
@@ -382,7 +381,7 @@ await Task.WhenAll(
viewModel.SchoolCapacityToolTipLink = viewModel.Establishment.TypeId.Equals((int)ET.AcademySecure16to19)
? string.Empty
: _resourcesHelper.GetResourceStringForEstablishment("SchoolCapacityLink", (eLookupEstablishmentTypeGroup?) viewModel.Establishment.EstablishmentTypeGroupId, User);
-
+
return View(viewModel);
}
diff --git a/Web/Edubase.Web.UI/Areas/Establishments/Models/BulkUpdateViewModel.cs b/Web/Edubase.Web.UI/Areas/Establishments/Models/BulkUpdateViewModel.cs
index 80c7a54bf..41d95cdc6 100644
--- a/Web/Edubase.Web.UI/Areas/Establishments/Models/BulkUpdateViewModel.cs
+++ b/Web/Edubase.Web.UI/Areas/Establishments/Models/BulkUpdateViewModel.cs
@@ -1,13 +1,11 @@
using Edubase.Web.UI.Areas.Establishments.Models.Validators;
using Edubase.Web.UI.Models;
-using FluentValidation.Attributes;
using System.Web;
using static Edubase.Services.Establishments.Models.BulkUpdateDto;
using Edubase.Services.Domain;
namespace Edubase.Web.UI.Areas.Establishments.Models
{
- [Validator(typeof(BulkUpdateViewModelValidator))]
public class BulkUpdateViewModel
{
public DateTimeViewModel EffectiveDate { get; set; } = new DateTimeViewModel();
@@ -27,4 +25,4 @@ public BulkUpdateViewModel(bool canOverrideCRProcess)
CanOverrideCRProcess = canOverrideCRProcess;
}
}
-}
\ No newline at end of file
+}
diff --git a/Web/Edubase.Web.UI/Areas/Governors/Models/GovernorsBulkUpdateViewModel.cs b/Web/Edubase.Web.UI/Areas/Governors/Models/GovernorsBulkUpdateViewModel.cs
index 86e1f3dd4..f62e1d6fc 100644
--- a/Web/Edubase.Web.UI/Areas/Governors/Models/GovernorsBulkUpdateViewModel.cs
+++ b/Web/Edubase.Web.UI/Areas/Governors/Models/GovernorsBulkUpdateViewModel.cs
@@ -1,11 +1,9 @@
using Edubase.Services.Domain;
using Edubase.Web.UI.Areas.Governors.Models.Validators;
-using FluentValidation.Attributes;
using System.Web;
namespace Edubase.Web.UI.Areas.Governors.Models
{
- [Validator(typeof(GovernorsBulkUpdateViewModelValidator))]
public class GovernorsBulkUpdateViewModel
{
public HttpPostedFileBase BulkFile { get; set; }
diff --git a/Web/Edubase.Web.UI/Areas/Groups/Controllers/GroupController.cs b/Web/Edubase.Web.UI/Areas/Groups/Controllers/GroupController.cs
index 453e95875..dce5279fb 100644
--- a/Web/Edubase.Web.UI/Areas/Groups/Controllers/GroupController.cs
+++ b/Web/Edubase.Web.UI/Areas/Groups/Controllers/GroupController.cs
@@ -11,7 +11,7 @@
using Edubase.Services.Security;
using Edubase.Web.UI.Areas.Groups.Models;
using Edubase.Web.UI.Helpers;
-using FluentValidation.Mvc;
+using Edubase.Web.UI.Validation;
namespace Edubase.Web.UI.Areas.Groups.Controllers
{
diff --git a/Web/Edubase.Web.UI/Controllers/EduBaseController.cs b/Web/Edubase.Web.UI/Controllers/EduBaseController.cs
index 70523755e..cb5b10507 100644
--- a/Web/Edubase.Web.UI/Controllers/EduBaseController.cs
+++ b/Web/Edubase.Web.UI/Controllers/EduBaseController.cs
@@ -1,7 +1,6 @@
using Autofac;
using Edubase.Services.Domain;
using Edubase.Web.UI.Helpers;
-using FluentValidation.Mvc;
using MoreLinq;
using System.Linq;
using System.Web.Mvc;
diff --git a/Web/Edubase.Web.UI/Edubase.Web.UI.csproj b/Web/Edubase.Web.UI/Edubase.Web.UI.csproj
index 23dcf727d..2aa4b273d 100644
--- a/Web/Edubase.Web.UI/Edubase.Web.UI.csproj
+++ b/Web/Edubase.Web.UI/Edubase.Web.UI.csproj
@@ -84,14 +84,8 @@
..\packages\EntityFramework.6.5.1\lib\net45\EntityFramework.SqlServer.dll
-
- ..\packages\FluentValidation.8.6.2\lib\net45\FluentValidation.dll
-
-
- ..\packages\FluentValidation.Mvc5.8.6.1\lib\net45\FluentValidation.Mvc.dll
-
-
- ..\packages\FluentValidation.ValidatorAttribute.8.6.1\lib\net45\FluentValidation.ValidatorAttribute.dll
+
+ ..\packages\FluentValidation.11.10.0\lib\netstandard2.0\FluentValidation.dll
..\packages\Glimpse.AspNet.1.9.2\lib\net45\Glimpse.AspNet.dll
diff --git a/Web/Edubase.Web.UI/Global.asax.cs b/Web/Edubase.Web.UI/Global.asax.cs
index 112f57651..247386e38 100644
--- a/Web/Edubase.Web.UI/Global.asax.cs
+++ b/Web/Edubase.Web.UI/Global.asax.cs
@@ -2,7 +2,6 @@
using Edubase.Common.Cache;
using Edubase.Web.UI.Filters;
using Edubase.Web.UI.Validation;
-using FluentValidation.Mvc;
using System;
using System.Configuration;
using System.IO;
@@ -60,11 +59,6 @@ protected void Application_Start()
IocConfig.AutofacDependencyResolver.ApplicationContainer.Resolve().InitialiseIfNecessaryAsync().Wait();
- var fluentValidationModelValidatorProvider = new FluentValidationModelValidatorProvider(new AutofacValidatorFactory(IocConfig.AutofacDependencyResolver));
- DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false;
- fluentValidationModelValidatorProvider.AddImplicitRequiredValidator = false;
- ModelValidatorProviders.Providers.Add(fluentValidationModelValidatorProvider);
-
var logger = IocConfig.AutofacDependencyResolver.ApplicationContainer.Resolve();
logger.ScheduleLogFlush();
logger.ScheduleLogPurge();
diff --git a/Web/Edubase.Web.UI/Validation/AutofacValidationModule.cs b/Web/Edubase.Web.UI/Validation/AutofacValidationModule.cs
index bda5d7907..985b3ea78 100644
--- a/Web/Edubase.Web.UI/Validation/AutofacValidationModule.cs
+++ b/Web/Edubase.Web.UI/Validation/AutofacValidationModule.cs
@@ -1,16 +1,4 @@
using Autofac;
-using Edubase.Web.UI.Areas.Establishments.Models;
-using Edubase.Web.UI.Areas.Establishments.Models.Validators;
-using Edubase.Web.UI.Areas.Governors.Models;
-using Edubase.Web.UI.Areas.Governors.Models.Validators;
-using Edubase.Web.UI.Areas.Groups.Models.CreateEdit;
-using Edubase.Web.UI.Areas.Groups.Models.Validators;
-using Edubase.Web.UI.Models;
-using Edubase.Web.UI.Models.DataQuality;
-using Edubase.Web.UI.Models.DataQuality.Validators;
-using Edubase.Web.UI.Models.Notifications;
-using Edubase.Web.UI.Models.Notifications.Validators;
-using Edubase.Web.UI.Models.Validators;
using FluentValidation;
namespace Edubase.Web.UI.Validation
@@ -19,73 +7,10 @@ public class ValidationModule : Module
{
protected override void Load(ContainerBuilder builder)
{
- builder.RegisterType()
- .Keyed(typeof(IValidator))
- .As().InstancePerDependency();
-
- builder.RegisterType()
- .Keyed(typeof(IValidator))
- .As();
-
- builder.RegisterType()
- .Keyed(typeof(IValidator))
- .As();
-
- builder.RegisterType()
- .Keyed(typeof(IValidator))
- .As();
-
- builder.RegisterType()
- .Keyed(typeof(IValidator))
- .As();
-
- builder.RegisterType()
- .Keyed(typeof(IValidator))
- .As();
-
- builder.RegisterType()
- .Keyed(typeof(IValidator))
- .As();
-
- builder.RegisterType()
- .Keyed(typeof(IValidator))
- .As();
-
- builder.RegisterType()
- .Keyed(typeof(IValidator))
- .As();
-
- builder.RegisterType()
- .Keyed(typeof(IValidator))
- .As();
-
- builder.RegisterType()
- .Keyed(typeof(IValidator))
- .As();
-
- builder.RegisterType()
- .Keyed(typeof(IValidator))
- .As();
-
- builder.RegisterType()
- .Keyed(typeof(IValidator))
- .As();
-
- builder.RegisterType()
- .Keyed(typeof(IValidator))
- .As();
-
- builder.RegisterType()
- .Keyed(typeof(IValidator))
- .As();
-
- builder.RegisterType()
- .Keyed(typeof(IValidator))
- .As();
-
- builder.RegisterType()
- .Keyed(typeof(IValidator))
- .As();
+ builder.RegisterAssemblyTypes(ThisAssembly)
+ .Where(t => t.IsClosedTypeOf(typeof(IValidator<>)))
+ .AsImplementedInterfaces()
+ .InstancePerDependency();
}
}
}
diff --git a/Web/Edubase.Web.UI/Validation/EdubaseAbstractValidator.cs b/Web/Edubase.Web.UI/Validation/EdubaseAbstractValidator.cs
index c1ec93c14..1331a3424 100644
--- a/Web/Edubase.Web.UI/Validation/EdubaseAbstractValidator.cs
+++ b/Web/Edubase.Web.UI/Validation/EdubaseAbstractValidator.cs
@@ -1,5 +1,4 @@
-using FluentValidation.Mvc;
-using System;
+using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
@@ -10,15 +9,19 @@
namespace Edubase.Web.UI.Validation
{
- public abstract class EdubaseAbstractValidator : AbstractValidator, IValidatorInterceptor
+ public abstract class EdubaseAbstractValidator : AbstractValidator
{
- public ValidationResult AfterMvcValidation(ControllerContext controllerContext, ValidationContext validationContext, ValidationResult result)
+ public ValidationResult AfterMvcValidation(ControllerContext controllerContext, ValidationContext validationContext, ValidationResult result)
{
result.EduBaseAddToModelState(controllerContext.Controller.ViewData.ModelState, null);
//controllerContext.Controller.ViewBag.FVErrors = result;
return result;
}
- public ValidationContext BeforeMvcValidation(ControllerContext controllerContext, ValidationContext validationContext) => validationContext;
+ public ValidationContext BeforeMvcValidation(ControllerContext controllerContext,
+ ValidationContext validationContext)
+ {
+ return validationContext;
+ }
}
-}
\ No newline at end of file
+}
diff --git a/Web/Edubase.Web.UI/Validation/ValidationExtensions.cs b/Web/Edubase.Web.UI/Validation/ValidationExtensions.cs
index f2bb8704f..6df405cdb 100644
--- a/Web/Edubase.Web.UI/Validation/ValidationExtensions.cs
+++ b/Web/Edubase.Web.UI/Validation/ValidationExtensions.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Web.Mvc;
using Edubase.Services.Domain;
+using FluentValidation.Results;
namespace Edubase.Web.UI.Validation
{
@@ -96,5 +97,14 @@ public static void ApplyToModelState(this ApiResponse apiResponse, ControllerCon
}
}
}
+
+ public static void AddToModelState(this ValidationResult result, ModelStateDictionary modelState, string prefix)
+ {
+ foreach (var error in result.Errors)
+ {
+ var key = string.IsNullOrEmpty(prefix) ? error.PropertyName : $"{prefix}.{error.PropertyName}";
+ modelState.AddModelError(key, error.ErrorMessage);
+ }
+ }
}
}
diff --git a/Web/Edubase.Web.UI/packages.config b/Web/Edubase.Web.UI/packages.config
index 7b1f3c5ea..7a0b6d40d 100644
--- a/Web/Edubase.Web.UI/packages.config
+++ b/Web/Edubase.Web.UI/packages.config
@@ -10,9 +10,7 @@
-
-
-
+