コード例 #1
0
        public async Task <IHtmlContent> InvokeAsync(string viewName, object model, ViewDataDictionary viewData)
        {
            // We always need a view name to invoke
            if (string.IsNullOrEmpty(viewName))
            {
                throw new ArgumentNullException(nameof(viewName));
            }

            var builder = new HtmlContentBuilder();
            var result  = FindView(viewName);

            if (!result.Success)
            {
                throw new Exception($"A view with the name \"{viewName}\" could not be found!");
            }

            var viewBuffer = new ViewBuffer(_viewBufferScope, result.ViewName, ViewBuffer.PartialViewPageSize);

            using (var writer = new ViewBufferTextWriter(viewBuffer, Encoding.UTF8))
            {
                await RenderPartialViewAsync(writer, model, viewData, result.View);
            }

            return(builder.SetHtmlContent(viewBuffer));
        }
コード例 #2
0
        public async Task <IHtmlContent> InvokeAsync(Abstractions.IView view)
        {
            // We always need a view name to invoke
            if (string.IsNullOrEmpty(view.ViewName))
            {
                throw new ArgumentNullException(nameof(view.ViewName));
            }

            var result = FindView(view.ViewName);

            if (!result.Success)
            {
                throw new Exception($"A view with the name \"{view.ViewName}\" could not be found!");
            }

            // Log the invocation
            if (_logger.IsEnabled(LogLevel.Information))
            {
                _logger.LogInformation($"Attempting to invoke partial view \"{view.ViewName}\".");
            }

            var builder = new HtmlContentBuilder();

            using (var writer = new StringWriter())
            {
                // Render view
                await RenderPartialViewAsync(writer, view.Model, ViewContext.ViewData, result.View);

                // Write results
                builder.WriteTo(writer, HtmlEncoder.Default);
                // Return builder
                return(builder.SetHtmlContent(writer.ToString()));
            }
        }
コード例 #3
0
        public static IHtmlContent UseScrollToTop(this RazorPage page)
        {
            var content = new HtmlContentBuilder();

            content.SetHtmlContent("<a class='aiur-scroll-to-top rounded' href='#page-top'><i class='fa fa-angle-up'></i></a>");
            return(content);
        }
コード例 #4
0
ファイル: PartialInvoker.cs プロジェクト: turenc/Plato
        public async Task <IHtmlContent> InvokeAsync(string viewName, object model, ViewDataDictionary viewData)
        {
            // We always need a view name to invoke
            if (string.IsNullOrEmpty(viewName))
            {
                throw new ArgumentNullException(nameof(viewName));
            }

            var builder = new HtmlContentBuilder();
            var result  = FindView(viewName);

            if (!result.Success)
            {
                throw new Exception($"A view with the name \"{viewName}\" could not be found!");
            }

            using (var writer = new StringWriter())
            {
                // Render view
                await RenderPartialViewAsync(writer, model, viewData, result.View);

                // Write results
                builder.WriteTo(writer, HtmlEncoder.Default);
                // Return builder
                return(builder.SetHtmlContent(writer.ToString()));
            }
        }
コード例 #5
0
        private IHtmlContent NeighborButton(int page)
        {
            var builder = new HtmlContentBuilder();

            builder.SetHtmlContent($"<a class='item' href='{Model.PagerUrl}?page={page}'>{page}</a>");

            return(builder);
        }
コード例 #6
0
        public async Task <IHtmlContent> RenderUserImageAsync(ClaimsPrincipal user, int width = 20, int height = 20, string @class = "rounded")
        {
            var url = await GetUserImageUrl(user) + $"?w={width}&square=true";

            var content = new HtmlContentBuilder();

            content.SetHtmlContent($"<img class='{@class}' src='{url}' style='width: {width}px; height: {height}px;' />");
            return(content);
        }
コード例 #7
0
        private IHtmlContent CreatePreviousPageArrow()
        {
            var builder = new HtmlContentBuilder();

            if (Model.CurrentPage - 1 > 0)
            {
                builder.SetHtmlContent($@"<a class='item' href='{Model.PagerUrl}?page={Model.CurrentPage - 1}'>
    <i class='left angle icon'></i>
</a>");
            }

            return(builder);
        }
コード例 #8
0
        private IHtmlContent CreateFirstPageArrow()
        {
            var builder = new HtmlContentBuilder();

            if (Model.CurrentPage != 1 && Model.CurrentPage - 1 != 1)
            {
                builder.SetHtmlContent($@"<a class='item' href='{Model.PagerUrl}?page=1'>
    <i class='double left angle icon'></i>
</a>");
            }

            return(builder);
        }
コード例 #9
0
        private IHtmlContent CreateLastPageArrow()
        {
            var builder = new HtmlContentBuilder();

            if (Model.CurrentPage != Model.LastPage && Model.CurrentPage + 1 != Model.LastPage)
            {
                builder.SetHtmlContent($@"<a class='item' href='{Model.PagerUrl}?page={Model.LastPage}'>
    <i class='double right angle icon'></i>
</a>");
            }

            return(builder);
        }
コード例 #10
0
        public static IHtmlContent UseChinaRegisterInfo(this RazorPage page)
        {
            var content = new HtmlContentBuilder();
            var requestCultureFeature = page.Context.Features.Get <IRequestCultureFeature>();

            if (requestCultureFeature == null)
            {
                return(content);
            }
            var requestCulture = requestCultureFeature.RequestCulture.UICulture.IetfLanguageTag;

            if (requestCulture == "zh")
            {
                content.SetHtmlContent("<a href='http://www.miitbeian.gov.cn' target='_blank'>辽ICP备17004979号-1</a>");
            }
            return(content);
        }