public TagBuilder Render() { var td = new TagBuilder("td"); td.Attributes.Add("style", $"text-align: center; {_parentContext.ButtonColumnStyle}"); td.Attributes.Add("class", _parentContext.ButtonColumnClass); foreach (var tableButton in _parentContext.TableButtons) { var a = new TagBuilder("a"); a.Attributes.Add("title", tableButton.Title); a.Attributes.Add("class", tableButton.Class); a.Attributes.Add("style", tableButton.Style); a.Attributes.Add("onclick", tableButton.OnClick); a.InnerHtml.SetHtmlContent($"<i class=\"{tableButton.IconClass}\"></i> "); var link = ""; if (string.IsNullOrEmpty(tableButton.CustomLink)) { a.Attributes.Add("target", tableButton.Target); link = $"/{tableButton.AspController ?? _parentContext.AspController}/{tableButton.AspAction ?? _parentContext.AspAction}/?"; link += $"returnUrl={_parentContext.ReturnUrl}"; // other parameters foreach (var route in tableButton.Routes) { // replace ColumnName for ColumnValue link += $"&{route.Key.Replace("asp-route-", "")}={_model.GetType().GetProperties().First(x => x.Name == route.Value).GetValue(_model)}"; } } else { a.Attributes.Add("target", tableButton.CustomLinkTarget); link = tableButton.CustomLink + (tableButton.CustomLink.Contains("?") ? "" : "?"); // other parameters foreach (var route in tableButton.Routes) { // replace ColumnName for ColumnValue link += $"&{route.Key.Replace("asp-route-", "")}={_model.GetType().GetProperties().First(x => x.Name == route.Value).GetValue(_model)}"; } } a.Attributes.Add("href", link); td.InnerHtml.AppendHtml(a); td.InnerHtml.AppendHtml(" "); } return(td); }
public override void Process(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext context, Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput output) { Microsoft.AspNetCore.Mvc.IUrlHelper urlHelper = urlHelperFactory.GetUrlHelper(ViewContext); Microsoft.AspNetCore.Mvc.Rendering.TagBuilder result = new Microsoft.AspNetCore.Mvc.Rendering.TagBuilder("div"); for (int i = 1; i <= PageModel.TotalPages; i++) { Microsoft.AspNetCore.Mvc.Rendering.TagBuilder tag = new Microsoft.AspNetCore.Mvc.Rendering.TagBuilder("a"); PageUrlValues["productPage"] = i; tag.Attributes["href"] = urlHelper.Action(PageAction, PageUrlValues); if (PageClassesEnabled) { tag.AddCssClass(PageClass); tag.AddCssClass(i == PageModel.CurrentPage ? PageClassSelected : PageClassNormal); } tag.InnerHtml.Append(i.ToString()); result.InnerHtml.AppendHtml(tag); } output.Content.AppendHtml(result.InnerHtml); }
public TagBuilder(string tagName) { _tagBuilder = new Microsoft.AspNetCore.Mvc.Rendering.TagBuilder(tagName); Attributes = _tagBuilder.Attributes; }
/// <summary> /// Render table header /// </summary> /// <returns></returns> public TagBuilder Render() { if (!_parentContext.RowsSettings.ShowHeader) { return(new TagBuilder("span")); } var output = new TagBuilder("thead"); var tr = new TagBuilder("tr"); // Get First Model item object model = ((IList)_parentContext.Model)[0]; foreach (var tc in _parentContext.TableColumns) { if (!tc.Visible) { continue; } var th = new TagBuilder("th"); th.Attributes.Add("class", tc.HeaderClass); th.Attributes.Add("style", tc.HeaderStyle); th.Attributes.Add("onclick", tc.OnClick); if (_parentContext.SortSettings.AllowSort && !tc.NoSort) { // inser as routes sortOrder and sortDirection var a = new TagBuilder("a"); a.InnerHtml.SetHtmlContent(RenderCaption(model, tc)); // generate link href var link = $"/{_parentContext.AspController}/{_parentContext.AspAction}/?"; link += $"searchString={_parentContext.SearchSettings.SearchString}"; link += $"&sortOrder={tc.SpecialSort ?? tc.AspFor}"; link += $"&sortDirection={(_parentContext.SortSettings.SortOrder == tc.SpecialSort || _parentContext.SortSettings.SortOrder == tc.AspFor ? (_parentContext.SortSettings.SortDirection == "desc" ? "asc" : "desc") : "asc")}"; link += $"&page={_parentContext.PaginationSettings.CurrentPage}"; link += $"&returnUrl={_parentContext.ReturnUrl}"; // other parameters foreach (var route in tc.Routes) { link += $"&{route.Key.Replace("asp-route-", "")}={route.Value}"; } a.Attributes.Add("href", link); if (_parentContext.SortSettings.SortOrder == tc.SpecialSort || _parentContext.SortSettings.SortOrder == tc.AspFor) { th.InnerHtml.AppendHtml($"<i class=\"fa fa-sort-alpha-{(_parentContext.SortSettings.SortDirection == "desc" ? "desc" : "asc")} pull-right\" style=\"padding: 3px 3px 0 0;\"></i> "); } th.InnerHtml.AppendHtml(a); } else { // mostra somente os captions, sem link th.InnerHtml.SetHtmlContent(RenderCaption(model, tc)); } tr.InnerHtml.AppendHtml(th); } // Add Buttons Column if (_parentContext.TableButtons.Count > 0) { var th = new TagBuilder("th"); th.Attributes.Add("style", $"text-align: center; {_parentContext.ButtonHeaderStyle}"); th.Attributes.Add("class", _parentContext.ButtonHeaderClass); th.InnerHtml.SetHtmlContent(_parentContext.ButtonHeaderTitle); tr.InnerHtml.AppendHtml(th); } output.InnerHtml.AppendHtml(tr); return(output); }