For those of you trying to write your own @Html.DatePickerFor() Here is what I did to get it working.
public static MvcHtmlString DatePickerFor<TModel, TValue>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TValue>> expression)
{
var propertyName = ExpressionHelper.GetExpressionText(expression);
var controlGroupWrapper = new TagBuilder("div");
controlGroupWrapper.AddCssClass("control-group");
controlGroupWrapper.InnerHtml += htmlHelper.LabelFor(expression, new Dictionary<string, object> { { "class", "control-label" } }).ToHtmlString();
var controlWrapper = new TagBuilder("div");
controlWrapper.AddCssClass("controls");
var datePicker = new TagBuilder("div");
datePicker.AddCssClass("input-append date datepicker");
datePicker.MergeAttribute("data-date-format", "dd/mm/yyy");
var spanWrapper = new TagBuilder("span");
spanWrapper.AddCssClass("add-on");
var iconThWrapper = new TagBuilder("i");
iconThWrapper.AddCssClass("icon-th");
GetPropValue(htmlHelper.ViewData.Model, propertyName);
var inputTag = htmlHelper.EditorFor(expression).ToHtmlString();
spanWrapper.InnerHtml += iconThWrapper.ToString(TagRenderMode.Normal);
datePicker.ToString(TagRenderMode.Normal);
datePicker.InnerHtml += inputTag + spanWrapper.ToString(TagRenderMode.Normal); ;
controlWrapper.InnerHtml += datePicker.ToString(TagRenderMode.Normal);
controlGroupWrapper.InnerHtml += controlWrapper.ToString(TagRenderMode.Normal);
return MvcHtmlString.Create(controlGroupWrapper.ToString(TagRenderMode.Normal));
}