public static MvcHtmlString BootstrapButton(this HtmlHelper html, string value, EButtonType buttonType = EButtonType.Submit, string iconCssClass = "", params EButtonClass[] buttonClasses) { var button = new TagBuilder(Tags.Button); var isRightAlignedCaret = buttonClasses.Contains(EButtonClass.IconRight); var leftAlignedText = isRightAlignedCaret ? $"{value} " : string.Empty; var rightAlignedText = !isRightAlignedCaret ? $" {value}" : string.Empty; button.MergeAttribute(Attributes.Type, buttonType.ToString()); button.MergeAttribute(Attributes.Class, GetButtonClass(buttonType, buttonClasses)); button.MergeAttribute(Attributes.DataLoadingText, $"<i class='fa fa-circle-o-notch fa-spin'></i> {value}"); switch (buttonType) { case EButtonType.Delete: button.InnerHtml = $"{leftAlignedText}<i class='fa fa-trash'></i>{rightAlignedText}"; break; case EButtonType.Edit: button.InnerHtml = $"{leftAlignedText}<i class='fa fa-pencil'></i>{rightAlignedText}"; break; default: if (string.IsNullOrEmpty(iconCssClass)) { button.InnerHtml = value; } else { button.InnerHtml = $"{leftAlignedText}<i class='fa {iconCssClass}'></i>{rightAlignedText}"; } break; } return(MvcHtmlString.Create(button.ToString())); }