Как конвертировать в DateTime на HTML.Textbox? - PullRequest
1 голос
/ 06 октября 2009

У меня есть текстовое поле, которое должно принимать только форматы даты и времени. Я не уверен, как конвертировать это в MVC. Я также хочу знать, как изменить формат «yyyyMMdd», который необходимо передать.

<%=Html.TextBox("effectiveDate") %> 

Мой контроллер не имеет ничего: X

public ActionResult Index()
{
     return View();
}

Я знаю, что что-то упустил ... что это?

Меня сейчас не беспокоит ввод плохой даты ... Я просто хочу получить концепцию конверсии.

Ответы [ 3 ]

3 голосов
/ 06 октября 2009

Для строго типизированной модели:

<%= Html.TextBox("effectiveDate", Model.effectiveDate.ToString("yyyyMMdd")) %> 

Если это не строго типизированная модель (т. Е. Она есть во ViewData), попробуйте следующее:

<%= Html.TextBox("effectiveDate", 
    ((DateTime)ViewData.EffectiveDate).ToString("yyyyMMdd")) %> 

Чтобы продемонстрировать использование второго метода, измените код контроллера на:

public ActionResult Index()
{
     ViewData("EffectiveDate") = DateTime.Now;
     return View();
}

Обязательно ознакомьтесь с руководствами по NerdDinner на http://nerddinnerbook.s3.amazonaws.com/Intro.htm

0 голосов
/ 06 октября 2009

Я передам это Роберту, но после просмотра его ссылки. Я начал с простого решения ...

<%=Html.TextBox("effectiveDate", String.Format("{0:g}", DateTime.Now)) %>

Я не хотел выполнять какую-либо бэкэнд-обработку до истечения даты, поэтому достаточно простого обратного просмотра () для того, что я пытался сделать. Еще раз спасибо, Роберт

0 голосов
/ 06 октября 2009

@ Ответ Роберта действителен. Однако, если вы используете строго типизированные ViewModels, и это представление только для чтения, тогда я бы предложил, чтобы свойство было строкой и форматом установки перед привязкой представления.

Если это редактируемая форма, то свойство DateTime, вероятно, будет более подходящим.

Я использую AutoMapper для выравнивания сущностей моего домена в разных представлениях и использую следующий конвертер DateTime (который делает его совместимым для всех англоязычных культур, вам, возможно, придется учитывать культуру больше, если ваша аудитория шире)

public class DateTimeTypeConverter : ITypeConverter<DateTime, string>
        {
            public string Convert(DateTime source)
            {
                return source.ToString("dd-MMM-yyyy");
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...