Return to Snippet

Revision: 39610
at January 19, 2011 03:11 by nkirkes


Initial Code
public static MvcHtmlString DateTextBoxFor<TModel, TValue>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TValue>> expression, string formatString, object htmlAttributes)
        {
            var metadata = ModelMetadata.FromLambdaExpression(expression, helper.ViewData);
            string format = String.IsNullOrEmpty(formatString) ? "M/d/yyyy" : formatString;
            DateTime date = metadata.Model == null ? new DateTime() : DateTime.Parse(metadata.Model.ToString());
            string value = date == new DateTime() ? String.Empty : date.ToString(format);
            RouteValueDictionary attributes = new RouteValueDictionary(htmlAttributes);
            string datePickerClass = "date-selector";
            if (attributes.ContainsKey("class"))
            {
                string cssClass = attributes["class"].ToString();
                attributes["class"] = cssClass.Insert(cssClass.Length, " " + datePickerClass);
            }
            else
            {
                attributes["class"] = datePickerClass;
            }
            return helper.TextBox(ExpressionHelper.GetExpressionText(expression), value, attributes);
        }

        public static MvcHtmlString DateTextBoxFor<TModel, TValue>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TValue>> expression)
        {
            return DateTextBoxFor<TModel, TValue>(helper, expression, String.Empty, null);
        }

        public static MvcHtmlString DateTextBoxFor<TModel, TValue>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TValue>> expression, string formatString)
        {
            return DateTextBoxFor<TModel, TValue>(helper, expression, formatString, null);
        }

Initial URL


Initial Description
I use these helper methods to create a jQuery based date text box with appropriate short date formatting.

Initial Title
Html.DateTextBoxFor

Initial Tags
c#

Initial Language
C#