/// <summary> /// 配置 Fireasy 的 MVC 相关事项。 /// </summary> /// <param name="builder"></param> /// <param name="setupAction"></param> /// <returns></returns> public static IMvcBuilder ConfigureFireasyMvc(this IMvcBuilder builder, Action <Fireasy.Web.Mvc.MvcOptions> setupAction = null) { var options = new Fireasy.Web.Mvc.MvcOptions(); setupAction?.Invoke(options); builder.Services.AddScoped <Fireasy.Web.Mvc.JsonSerializeOptionHosting>(); if (options.UseTypicalJsonSerializer) { builder.Services.Configure <MvcOptions>(s => s.OutputFormatters.Insert(0, new Fireasy.Web.Mvc.JsonOutputFormatter(options))); #if NETCOREAPP3_0 builder.Services .AddHttpContextAccessor() .AddSingleton <IJsonHelper, Fireasy.Web.Mvc.JsonHelper>() .AddSingleton <IActionResultExecutor <JsonResult>, Fireasy.Web.Mvc.JsonResultExecutor>(); #else builder.Services .AddSingleton <JsonResultExecutor, Fireasy.Web.Mvc.JsonResultExecutor>(); #endif } if (options.DisableModelValidator) { builder.Services.AddSingleton <IObjectModelValidator, Fireasy.Web.Mvc.NoneObjectModelValidator>(); } #if !NETCOREAPP3_0 if (options.UseRootRazorProject) { builder.Services.AddSingleton <RazorProjectFileSystem, Fireasy.Web.Mvc.BasedRazorProject>(); } #endif if (options.UseErrorHandleFilter) { builder.Services.Configure <MvcOptions>(s => { s.Filters.Add(new Fireasy.Web.Mvc.HandleErrorAttribute()); }); } if (options.UseJsonModelBinder) { builder.Services.Configure <MvcOptions>(s => { s.ModelBinderProviders.Insert(0, new Fireasy.Web.Mvc.JsonModelBinderProvider(options)); }); } if (setupAction != null) { builder.Services.Configure(setupAction); } return(builder); }
/// <summary> /// 配置 Fireasy 的 MVC 相关事项。 /// </summary> /// <param name="builder"></param> /// <param name="setupAction"></param> /// <returns></returns> public static IMvcBuilder ConfigureFireasyMvc(this IMvcBuilder builder, Action <Fireasy.Web.Mvc.MvcOptions> setupAction = null) { var options = new Fireasy.Web.Mvc.MvcOptions(); setupAction?.Invoke(options); builder.Services.AddScoped <Fireasy.Web.Mvc.JsonSerializeOptionHosting>(); if (options.UseTypicalJsonSerializer) { builder.Services.Configure <MvcOptions>(s => s.OutputFormatters.Insert(0, new Fireasy.Web.Mvc.JsonOutputFormatter(options))); builder.Services.AddSingleton <JsonResultExecutor, Fireasy.Web.Mvc.JsonResultExecutor>(); } if (options.DisableModelValidator) { builder.Services.AddSingleton <IObjectModelValidator, Fireasy.Web.Mvc.NoneObjectModelValidator>(); } if (options.UseReferenceAssembly) { builder.PartManager.FeatureProviders.Remove(builder.PartManager.FeatureProviders.First(f => f is MetadataReferenceFeatureProvider)); builder.PartManager.FeatureProviders.Add(new Fireasy.Web.Mvc.ReferencesMetadataReferenceFeatureProvider()); } if (options.UseRootRazorProject) { builder.Services.AddSingleton <RazorProjectFileSystem, Fireasy.Web.Mvc.BasedRazorProject>(); } if (options.UseErrorHandleFilter) { builder.Services.Configure <MvcOptions>(s => { s.Filters.Add(new Fireasy.Web.Mvc.HandleErrorAttribute()); }); } if (options.UseJsonModelBinder) { builder.Services.Configure <MvcOptions>(s => { s.ModelBinderProviders.Insert(0, new Fireasy.Web.Mvc.JsonModelBinderProvider(options)); }); } if (setupAction != null) { builder.Services.Configure(setupAction); } return(builder); }
/// <summary> /// 配置 Fireasy 的 MVC 相关事项。 /// </summary> /// <param name="builder"></param> /// <param name="setupAction"></param> /// <returns></returns> public static IMvcBuilder ConfigureFireasyMvc(this IMvcBuilder builder, Action <Fireasy.Web.Mvc.MvcOptions> setupAction = null) { var options = new Fireasy.Web.Mvc.MvcOptions(); if (setupAction != null) { setupAction(options); Fireasy.Web.Mvc.GlobalSetting.Converters.AddRange(options.Converters); } if (options.UseCustomResultExecutor) { builder.Services.AddSingleton <JsonResultExecutor, Fireasy.Web.Mvc.JsonResultExecutor>(); } if (options.DisableModelValidator) { builder.Services.AddSingleton <IObjectModelValidator, Fireasy.Web.Mvc.NoneObjectModelValidator>(); } if (options.UseReferenceAssembly) { builder.PartManager.FeatureProviders.Remove(builder.PartManager.FeatureProviders.First(f => f is MetadataReferenceFeatureProvider)); builder.PartManager.FeatureProviders.Add(new Fireasy.Web.Mvc.ReferencesMetadataReferenceFeatureProvider()); } builder.Services.AddSingleton <RazorProject, Fireasy.Web.Mvc.BasedRazorProject>(); builder.Services.Configure <MvcOptions>(s => { s.Filters.Add(new Fireasy.Web.Mvc.HandleErrorAttribute()); }); if (options.UseJsonModelBinder) { builder.Services.Configure <MvcOptions>(s => { s.ModelBinderProviders.Insert(0, new Fireasy.Web.Mvc.JsonModelBinderProvider()); }); } return(builder); }