예제 #1
0
        private void Body(CardConfig config)
        {
            if (config.Ajax != null || config.Content != null || config.HtmlContent != null)
            {
                TagBuilder body = new TagBuilder("div");

                Element.InnerHtml.AppendHtml(body);
                body.AddCssClass("card-body");
                this.AddElement(new TagBuilder("h5"), new[] { "card-title" }, config.Title, body);
                this.AddElement(new TagBuilder("h6"), new[] { "card-subtitle" }, config.SubTitle, body);

                if (config.Ajax != null)
                {
                    string         id          = Guid.NewGuid().ToString();
                    string         indicatorId = Guid.NewGuid().ToString();
                    TagBuilder     ajaxTrigger = new TagBuilder("a");
                    AjaxConfigBase ajaxConfig  = new AjaxConfigBase
                    {
                        Url        = config.Ajax.Url,
                        UpdateId   = indicatorId,
                        UpdateMode = AjaxUpdateMode.Replace,
                    };
                    TagBuilder container = new TagBuilder("div");

                    body.Attributes.Add("id", id);

                    ajaxTrigger.Attributes.Add("style", "display:none;");
                    ajaxTrigger.Attributes.Add("data-mvccorebootstrap-panel-ajax", null);
                    body.InnerHtml.AppendHtml(ajaxTrigger);
                    container.Attributes.Add("id", indicatorId);
                    body.InnerHtml.AppendHtml(container);
                    if (!string.IsNullOrEmpty(config.Ajax.IndicatorPath))
                    {
                        TagBuilder indicator = new TagBuilder("img");

                        indicator.Attributes.Add("src", config.Ajax.IndicatorPath);
                        indicator.AddCssClass(config.Ajax.IndicatorCss);
                        container.InnerHtml.AppendHtml(indicator);
                    }
                    if (!string.IsNullOrEmpty(config.Ajax.ErrorContent))
                    {
                        TagBuilder error   = new TagBuilder("div");
                        string     errorId = Guid.NewGuid().ToString();

                        error.Attributes.Add("id", errorId);
                        error.Attributes.Add("style", "display:none;");
                        error.InnerHtml.AppendHtml(config.Ajax.ErrorContent);
                        body.InnerHtml.AppendHtml(error);
                        ajaxConfig.Error = $"$('#{errorId}').show();$('#{indicatorId}').hide();";
                    }
                    this.ConfigAjax(ajaxTrigger, ajaxConfig);
                }
                else
                {
                    this.AddElement(new TagBuilder("p"), new[] { "card-text" }, config.HtmlContent, body);
                    this.AddElement(new TagBuilder("p"), new[] { "card-text" }, config.Content, body);
                }
            }
        }
예제 #2
0
        private void Items()
        {
            foreach (var item in _config.Items)
            {
                TagBuilder element = new TagBuilder(_types == ItemTypes.Buttons
                    ? "button"
                    : (_types == ItemTypes.Links ? "a" : "li"));
                IEnumerable <string> cssClasses = item.Disabled
                    ? new[] { "list-group-item", "d-flex", "justify-content-between", "align-items-center", "disabled" }
                    : new[] { "list-group-item", "d-flex", "justify-content-between", "align-items-center" };

                this.AddElement(element, cssClasses, item.Content);
                this.AddContextualState(element, item.State, "list-group-item-");
                if (_types == ItemTypes.Buttons && item.ClickHandler != null && !item.Disabled)
                {
                    element.Attributes.Add("onclick", item.ClickHandler.Replace("()", "") + $"({item.Id})");
                }
                if (_types == ItemTypes.Links && !item.Disabled)
                {
                    if (item.Ajax != null)
                    {
                        AjaxConfigBase ajaxConfig = new AjaxConfigBase
                        {
                            Url = item.Ajax.Url, UpdateId = item.Ajax.UpdateId, UpdateMode = AjaxUpdateMode.Replace,
                        };

                        this.ConfigAjax(element, ajaxConfig);
                        element.Attributes.Add("href", "#");
                    }
                    else
                    {
                        element.Attributes.Add("href", item.Url);
                    }
                }
                if (!string.IsNullOrEmpty(item.Badge))
                {
                    TagBuilder badge = new TagBuilder("span");

                    badge.AddCssClass("badge");
                    this.AddContextualState(badge, item.BadgeContextualState, "badge-");
                    this.AddElement(badge, item.Badge, element);
                    //this.AddElement(new TagBuilder("span"), new[] { "badge badge-primary badge-pill" }, item.Badge, element);
                }
            }
        }
예제 #3
0
 protected void ConfigAjax(TagBuilder element, AjaxConfigBase config, string url = null,
                           bool dataOnSuccess = false, string id = null)
 {
     if (config != null)
     {
         element.Attributes.Add("data-ajax", "true");
         if (config.UpdateId != null)
         {
             element.Attributes.Add("data-ajax-update", $"#{config.UpdateId}");
         }
         element.Attributes.Add("data-ajax-mode", config.UpdateMode.ToString().ToLower());
         element.Attributes.Add("data-ajax-url", url ?? config.Url);
         if (config.BusyIndicatorId != null)
         {
             element.Attributes.Add("data-ajax-loading", "#" + config.BusyIndicatorId);
         }
         element.Attributes.Add("data-ajax-begin", $"{this.AddJavascriptFuncPars(config.Start, id)}");
         element.Attributes.Add("data-ajax-success", $"{this.AddJavascriptFuncPars(config.Success, id, true, dataOnSuccess)}");
         element.Attributes.Add("data-ajax-failure", $"{this.AddJavascriptFuncPars(config.Error, id)}");
         element.Attributes.Add("data-ajax-complete", $"{this.AddJavascriptFuncPars(config.Complete, id)}");
     }
 }