Как отформатировать значение в strongy введенное представление при использовании HTML MVC's ASP.NET. TextBoxFor

Я пытаюсь отформатировать дату, представленную MVC's ASP.NET TextBoxFor с помощью значения представления со строгим контролем типов. Дата nullable поэтому, если это является пустым, я хочу видеть пустое значение, иначе я хочу видеть его в формате MM/dd/yyyy.

<%= Html.TextBoxFor(model => model.BirthDate, new { style = "width: 75px;" })%>

Спасибо,
Paul Speranza

17
задан 2 revs, 2 users 100% 28 September 2013 в 14:41
поделиться

5 ответов

Вы пытались просто пройти в формате даты, который вы хотели бы?

Html.TextBoxFor(model => model.BirthDate.ToString("MM/dd/yyyy"), 
                new { style = "width: 75px;" })
-3
ответ дан 30 November 2019 в 11:27
поделиться

Вы пытались заставить культуру вашего текущего приложения потока? Вы можете переопределить его в Web.config, используя эту строку (в теге):

<!-- Default resource files are set here. The culture will also change date format, decimal, etc... -->
<globalization enableClientBasedCulture="false" culture="en-US" uiCulture="en-US"/>
0
ответ дан 30 November 2019 в 11:27
поделиться

Сначала добавьте это расширение для получения пути к свойству:

public static string GetPropertyPath<TEntity, TProperty>(Expression<Func<TEntity, TProperty>> property)
{                       
     Match match = Regex.Match(property.ToString(), @"^[^\.]+\.([^\(\)]+)$");
     return match.Groups[1].Value;
}

Затем добавьте эти расширения для HtmlHalper:

public static MvcHtmlString DateBoxFor<TEntity>(
            this HtmlHelper helper,
            TEntity model,
            Expression<Func<TEntity, DateTime?>> property,
            object htmlAttributes)
        {
            DateTime? date = property.Compile().Invoke(model);

            // Here you can format value as you wish
            var value = date.HasValue ? date.Value.ToShortDateString() : string.Empty;
            var name = ExpressionParseHelper.GetPropertyPath(property);

            return helper.TextBox(name, value, htmlAttributes);
        }

Также вы должны добавить этот код jQuery:

$(function() {
    $("input.datebox").datepicker();
});

datepicker - это плагин jQuery.

И теперь вы можете использовать его:

 <%= Html.DateBoxFor(Model, (x => x.Entity.SomeDate), new { @class = "datebox" }) %>
4
ответ дан 30 November 2019 в 11:27
поделиться

Это грязный прием, но, похоже, он работает.

<%= Html.TextBoxFor(model => model.SomeDate,
    new Dictionary<string, object> { { "Value", Model.SomeDate.ToShortDateString() } })%>

Вы получаете привязку модели и можете переопределить свойство HTML "value" текстового поля с форматированной строкой.

2
ответ дан 30 November 2019 в 11:27
поделиться

Простое решение - не использовать строго типизированный помощник.

<%= Html.TextBox("StartDate", string.Format("{0:d}", Model.StartDate)) %>
0
ответ дан 30 November 2019 в 11:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: