private void RenderButtons(NavHtmlTextWritter textWriter) { // Buttons Control-Group textWriter.AddAttribute(HtmlTextWriterAttribute.Class, "form-group"); textWriter.RenderBeginTag((HtmlTextWriterTag)HtmlTextWriterTag.Div); // Controls Div textWriter.AddAttribute(HtmlTextWriterAttribute.Class, "controls"); textWriter.RenderBeginTag((HtmlTextWriterTag)HtmlTextWriterTag.Div); // Submit Button textWriter.AddAttribute(HtmlTextWriterAttribute.Type, "submit"); textWriter.AddAttribute(HtmlTextWriterAttribute.Class, "btn btn-default btn-primary"); textWriter.AddAttribute(HtmlTextWriterAttribute.Value, "Submit"); textWriter.RenderBeginTag((HtmlTextWriterTag)HtmlTextWriterTag.Input); textWriter.RenderEndTag(); //</input> textWriter.Write(" "); // Cancel Button textWriter.AddAttribute(HtmlTextWriterAttribute.Type, "button"); textWriter.AddAttribute(HtmlTextWriterAttribute.Class, "btn btn-default"); textWriter.AddAttribute(HtmlTextWriterAttribute.Value, "Cancel"); textWriter.AddAttribute(HtmlTextWriterAttribute.Onclick, "window.location = '" + helper.ViewContext.HttpContext.Request.UrlReferrer + "'"); textWriter.RenderBeginTag((HtmlTextWriterTag)HtmlTextWriterTag.Input); textWriter.RenderEndTag(); //</input> textWriter.RenderEndTag(); // div (Controls Div) textWriter.RenderEndTag(); // div (Buttons Control-Group) }
public MenuContainer(NavHtmlTextWritter htmlTextWriter) { this.htmlTextWriter = htmlTextWriter; //<nav class="navbar navbar-default" role="navigation"> this.htmlTextWriter.AddAttribute(HtmlTextWriterAttribute.Class, "nav navbar-nav"); this.htmlTextWriter.RenderBeginTag(HtmlTextWriterTag.Ul); }
private static void PageItem(NavHtmlTextWritter textWriter, MvcHtmlString linkBlock, string cssClass = "") { if (cssClass != string.Empty) { textWriter.AddAttribute(HtmlTextWriterAttribute.Class, cssClass); } textWriter.RenderBeginTag(HtmlTextWriterTag.Li); textWriter.Write(linkBlock); textWriter.RenderEndTag(); }
public MvcHtmlString Build(MenuItem menu) { var sb = new StringBuilder(); var stringWriter = new StringWriter(sb); using (var textWriter = new NavHtmlTextWritter(stringWriter)) { using (new MenuContainer(textWriter)) foreach (var menuItem in menu.Children) { Render(menuItem, textWriter); } return(new MvcHtmlString(sb.ToString())); } }
public virtual MvcHtmlString Build(TModel model, BootstrapFormType formType, bool renderButtons = true) { var sb = new StringBuilder(2000); var formElements = ExtractElementsToRender(model); var groupsofElements = formElements.OrderBy(x => x.ControlSpecs.GroupName).GroupBy(x => x.ControlSpecs.GroupName); bool useLegend = (formElements.Select(x => x.ControlSpecs.GroupName).Distinct().Count() > 1); var stringWriter = new StringWriter(sb); using (var textWriter = new NavHtmlTextWritter(stringWriter)) { RenderHiddenFields(model, formElements, textWriter); foreach (var groupedElements in groupsofElements) { var groupName = (!String.IsNullOrEmpty(groupedElements.Key)) ? groupedElements.Key : "General"; using (new ElementGroup(textWriter, groupName, useLegend)) { var elementsToRender = groupedElements.Where(x => x.ControlSpecs.Control != ControlType.Hidden) .OrderBy(x => x.ControlSpecs.Order); // loop over the attributes (ordered).. foreach (var formElement in elementsToRender) { using (new ControlGroup(textWriter)) { ControlGroup.RenderLabel(formType, formElement, textWriter); using (new ControlContainer(textWriter)) { // Control RenderElement(textWriter, model, formElement); } } } } } if (renderButtons) { RenderButtons(textWriter); } return(new MvcHtmlString(sb.ToString())); } }
private void RenderHiddenFields(TModel model, IEnumerable <FormElement> formElements, NavHtmlTextWritter textWriter) { foreach (var formElement in formElements) { var hiddenAttribute = formElement.ControlSpecs; if (hiddenAttribute != null && hiddenAttribute.Control == ControlType.Hidden) { RenderElement(textWriter, model, formElement); } } }
protected void RenderElement(NavHtmlTextWritter writer, TModel model, FormElement formElement) { PropertyInfo property = formElement.PropertyInfo; bool isRequired = false; var requiredAttribute = property.GetCustomAttributes(typeof(RequiredAttribute), false).FirstOrDefault() as RequiredAttribute; if (requiredAttribute != null) { isRequired = true; } var value = property.GetValue(model, null); writer.AddAttribute(HtmlTextWriterAttribute.Class, "form-control"); switch (formElement.ControlSpecs.Control) { case ControlType.TextBox: formControlGenerator.RenderTextBox(writer, formElement, value, isRequired); break; case ControlType.Hidden: formControlGenerator.RenderHidden(writer, formElement, value, isRequired); break; case ControlType.TextArea: formControlGenerator.RenderTextArea(writer, formElement, value, isRequired); break; case ControlType.Password: formControlGenerator.RenderPassword(writer, formElement, value, isRequired); break; case ControlType.DateTime: formControlGenerator.RenderDateTime(writer, formElement, value, isRequired); break; case ControlType.FloatingPointNumber: formControlGenerator.RenderFloatingPointNumber(writer, formElement, value, isRequired); break; case ControlType.WholeNumber: formControlGenerator.RenderWholeNumber(writer, formElement, value, isRequired); break; case ControlType.Time: formControlGenerator.RenderDateTime(writer, formElement, value, isRequired); break; case ControlType.CheckBox: formControlGenerator.RenderBoolean(writer, formElement, value); break; case ControlType.Enum: formControlGenerator.RenderEnum(writer, formElement, value, isRequired); break; case ControlType.DropDownList: var collectionObject = properties[formElement.CollectionInfo.ListSourceMember] .GetValue(model, null) as IEnumerable <SelectListItem>; formControlGenerator.RenderDropDownList(writer, formElement, value, isRequired, collectionObject); break; case ControlType.ListBox: break; case ControlType.StaticText: formControlGenerator.RenderStaticText(writer, formElement, value, isRequired); break; default: throw new ArgumentOutOfRangeException(); } }
public static MvcHtmlString PageLinks( this HtmlHelper html, object queryObject, Func <object, string> urlActionDelegate, int linksToShow = 0) { var pagingInfoViewModel = queryObject as IPagingParameters; var result = new StringBuilder(); if (pagingInfoViewModel != null) { var currentPage = pagingInfoViewModel.PageNumber + 1; var totalPages = pagingInfoViewModel.TotalPages; linksToShow = (linksToShow == 0) ? totalPages : linksToShow; if (pagingInfoViewModel.TotalPages <= 1) { return(MvcHtmlString.Create(string.Empty)); } var stringWriter = new StringWriter(result); string linkBlock = string.Empty; using (var textWriter = new NavHtmlTextWritter(stringWriter)) { { textWriter.AddAttribute(HtmlTextWriterAttribute.Class, Configurations.WebConfigurations.PagingConfigurations.PaginationCssClass); textWriter.RenderBeginTag(HtmlTextWriterTag.Ul); { if (currentPage > 1) { pagingInfoViewModel.PageNumber = 1; PageItem(textWriter, BasePagingExtensions.CreatePageLink(urlActionDelegate, queryObject, Configurations.WebConfigurations.PagingConfigurations.FirstPageText)); pagingInfoViewModel.PageNumber = currentPage - 1; PageItem(textWriter, BasePagingExtensions.CreatePageLink(urlActionDelegate, queryObject, Configurations.WebConfigurations.PagingConfigurations.PreviousPageText)); } // create page links int start = 1; int end = totalPages; start = PagerPounds(linksToShow, totalPages, currentPage, start, ref end); for (int i = start; i <= end; i++) { pagingInfoViewModel.PageNumber = i; if (i == currentPage) { PageItem(textWriter, BasePagingExtensions.CreatePageLink(urlActionDelegate, queryObject, i.ToString()), Configurations.WebConfigurations.PagingConfigurations.ActivePageClass); } else { PageItem(textWriter, BasePagingExtensions.CreatePageLink(urlActionDelegate, queryObject, i.ToString())); } } // create 'Next >>' link if (currentPage < totalPages) { pagingInfoViewModel.PageNumber = currentPage + 1; PageItem(textWriter, BasePagingExtensions.CreatePageLink(urlActionDelegate, queryObject, Configurations.WebConfigurations.PagingConfigurations.NextPageText)); pagingInfoViewModel.PageNumber = totalPages; PageItem(textWriter, BasePagingExtensions.CreatePageLink(urlActionDelegate, queryObject, Configurations.WebConfigurations.PagingConfigurations.LastPageText)); } textWriter.RenderEndTag(); } } } } return(MvcHtmlString.Create(result.ToString())); }