コード例 #1
0
        /// <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);
        }
コード例 #2
0
        /// <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);
        }
コード例 #3
0
        /// <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);
        }