public DatePicker.DatePickerBuilder DatePickerFor <TProperty>(Expression <Func <TModel, TProperty> > expression, IDictionary <string, object> htmlAttributes) { ViewDataDictionary <TModel> viewData = new ViewDataDictionary <TModel>(HtmlHelper.ViewData); ModelMetadata metadata = ModelMetadata.FromLambdaExpression(expression, viewData); string htmlFieldName = ExpressionHelper.GetExpressionText(expression); string labelText = metadata.DisplayName; if (labelText == null) { labelText = BsHelper.SplitCamelCase(metadata.PropertyName ?? htmlFieldName.Split('.').Last()); } // add a placeholder if it isn't already there if (!String.IsNullOrEmpty(labelText)) { if (!htmlAttributes.ContainsKey("placeholder")) { htmlAttributes["placeholder"] = "{placeholder}"; } } // add form-control if (htmlAttributes.ContainsKey("class")) { htmlAttributes["class"] += " form-control date"; } else { htmlAttributes["class"] = "form-control date"; } DateTime?dtval = null; string val = HtmlHelper.ValueFor <TModel, TProperty>(expression).ToString(); string input = HtmlHelper.TextBoxFor(expression, htmlAttributes).ToString(); if (val.Length > 0) { input = input.Replace(val, "{value}"); DateTime temp; if (DateTime.TryParse(val, out temp)) { dtval = temp; } } DatePicker.DatePicker component = new DatePicker.DatePicker(htmlFieldName); component.DisplayName = labelText; DatePickerBuilder builder = new DatePickerBuilder(component, input, dtval); return(builder); }
public DatePickerBuilder(DatePicker component, string input, DateTime? value) { this.Component = component; this.Input = input; this.Value = value; }