/// <summary> /// Html helper for generating drop down list for Enum type model property. /// </summary> /// <typeparam name="TModel">The type of the model.</typeparam> /// <typeparam name="TEnum">The type of the enum.</typeparam> /// <param name="zephyrHtmlHelper">The Zephyr framework html helper accessible through Html.Zephyr() </param> /// <param name="expression">The expression.</param> /// <param name="defaultText">Default text for empty item on nullable enum type property </param> /// <param name="htmlAttributes">The HTML attributes.</param> /// <returns></returns> public static MvcHtmlString EnumDropDownListFor <TModel, TEnum>(this ZephyrHtmlHelper <TModel> zephyrHtmlHelper, Expression <Func <TModel, TEnum> > expression, string defaultText = "", object htmlAttributes = null) where TModel : class { ModelMetadata metadata = ModelMetadata.FromLambdaExpression(expression, zephyrHtmlHelper.HtmlHelper.ViewData); Type enumType = Nullable.GetUnderlyingType(metadata.ModelType) ?? metadata.ModelType; IEnumerable <TEnum> values = Enum.GetValues(enumType).Cast <TEnum>(); IList <SelectListItem> items = values.Select(val => new SelectListItem { Text = val.ToString(), Value = val.ToString(), Selected = val.Equals(metadata.Model) }).ToList(); if (metadata.Model is Nullable && metadata.Model == null) { items.Insert(0, new SelectListItem { Value = "", Text = defaultText, Selected = true }); } // If the enum is nullable, add an 'empty' item to the collection if (metadata.IsNullableValueType) { items.Insert(0, new SelectListItem { Value = "", Text = defaultText }); //items = _singleEmptyItem.Concat(items).ToList(); } return(zephyrHtmlHelper.HtmlHelper.DropDownListFor(expression, items, htmlAttributes)); }
public static bool ExistsView <TModel>(this ZephyrHtmlHelper <TModel> zephyrHelper, string viewName) where TModel : class { ViewEngineResult viewResult = ViewEngines.Engines.FindView(zephyrHelper.HtmlHelper.ViewContext.Controller.ControllerContext, viewName, null); return(viewResult.View != null); }
public static IHtmlString Flash <TModel>(this ZephyrHtmlHelper <TModel> zephyrHelper, string tagName = "div", bool htmlEncoded = true) where TModel : class { //Func<string, XNode> content = message => encoded ? new XText(message) : XElement.Parse(message) as XNode; Func <string, XNode> content = message => new XText(message); var messages = new FlashStorage(zephyrHelper.HtmlHelper.ViewContext.TempData).Messages.ToList(); var elements = messages.Select(pair => new XElement(tagName ?? "div", new XAttribute("class", "alert" + " " + pair.Key), new XElement("button", new XAttribute("class", "close"), new XAttribute("data-dismiss", "alert"), "×"), content(pair.Value) )); var html = string.Join(Environment.NewLine, elements.Select(e => e.ToString())); return(zephyrHelper.HtmlHelper.Raw(htmlEncoded ? html : HttpUtility.HtmlDecode(html))); }
public static MvcHtmlString Tabs <TModel>(this ZephyrHtmlHelper <TModel> titanHelper, TabItemModel[] items) where TModel : class { var model = new TabHelperModel(items); foreach (var tabItemModel in model) { //tabItemModel.HtmlContent = titanHelper.HtmlHelper.Action("Index", tabItemModel.ControllerName); //need to implement controller resolved content if (tabItemModel.HtmlContent == null) { tabItemModel.HtmlContent = new MvcHtmlString("sample content"); } } return(titanHelper.CreateHtmlHelperForModel(model).DisplayForModel(model)); }
public static MvcHtmlString Pager <TModel>(this ZephyrHtmlHelper <TModel> zephyrHelper, IPagedList model, string template = "Pager") where TModel : class { return(zephyrHelper.CreateHtmlHelperForModel(model).DisplayForModel(template, model)); }
public static MvcHtmlString PageTitle <TModel>(this ZephyrHtmlHelper <TModel> titanHelper) where TModel : class { var appName = Zephyr.Configuration.ZephyrConfiguration.ZephyrSettings.AppName; return(new MvcHtmlString(appName + " - " + titanHelper.HtmlHelper.ViewData["Title"])); }