public IActionResult Load(FWDataOptionsViewModel bindModel)
        {
            var options = _memoryCache.Get <FWListOptions>(bindModel.CId);

            if (options == null)
            {
                return(StatusCode(500, "bad model"));
            }

            var filter = FWMapperHelper.Transform(options.FilterType, bindModel);

            FWModelHelper.BindFilterFromQueryString(filter, HttpContext.Request.Query);

            HttpContext.SetView(options.ViewPath);

            var service = _serviceProvider.GetService(options.ServiceType);
            var model   = options.ServiceMethod.Invoke(service, new object[] { filter }) as IEnumerable;

            // Gets the metadata from the return type of the service method.
            var metadata = _requestContext.MetadataProvider.GetMetadataForType(options.ServiceMethod.ReturnParameter.ParameterType);
            var control  = new FWListControl(_requestContext, metadata, model);

            foreach (var config in options.FluentConfiguration)
            {
                config.Invoke(control);
            }

            return(Content(control.ToString()));
        }
        /// <summary>
        /// Creates the framework control.
        /// </summary>
        /// <param name="context">Contains information associated with the current HTML tag.</param>
        /// <param name="output">A stateful HTML element used to generate an HTML tag.</param>
        /// <returns>The control instance.</returns>
        protected override IFWHtmlElement RenderControl(TagHelperContext context, TagHelperOutput output)
        {
            if (Id == null)
            {
                Id = TagBuilder.CreateSanitizedId(Path.GetFileNameWithoutExtension(ViewContext.View.Path), "_");
            }

            FWListOptions options = CreateComponentConfig();

            // Gets the metadata from the return type of the service method.
            var metadata = RequestContext.MetadataProvider.GetMetadataForType(options.ServiceMethod.ReturnParameter.ParameterType);
            var control  = new FWListControl(RequestContext, metadata, options);

            control.Attributes.Add("data-control", "list");

            context.Items["TemplateOptions"] = options;
            ChildContent.GetContent();

            return(control);
        }