Как отформатировать дату в лямбда-выражении в Razor View? - PullRequest
6 голосов
/ 12 июля 2011

У меня есть вид, для которого мне нужно отобразить дату в формате "dd/MM/yyyy".

На самом деле это отображается как: @Html.LabelFor(model => model.DtNews), и я не знаю, где и как я могу поставить функцию Format ().

Данные извлекаются из базы данных с использованием EF. Как я могу это сделать?

Ответы [ 6 ]

7 голосов
/ 12 июля 2011
@Html.LabelFor(model => model.DtNews)
@Html.EditorFor(model => model.DtNews)

и в вашей модели представления вы можете использовать атрибут [DisplayFormat]

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
public DateTime DtNews { get; set; }

Теперь вы скажете мне, что этот класс генерируется EF-фреймворком, на который я отвечаю вам: ВЫ НЕ ДОЛЖНЫ ИСПОЛЬЗОВАТЬ СВОИ АВТОМАТИЗИРОВАННЫЕ МОДЕЛИ EF В ВАШИХ ВИДАХ . Вы должны определить и использовать модели представления. Модели представлений - это классы, специально разработанные с учетом требований ваших представлений. Например, в этом конкретном виде у вас есть требование форматировать даты определенным образом: идеально подходит для моделей вида:

public class MyViewModel
{
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
    public DateTime DtNews { get; set; }
}

тогда действие вашего контроллера может запросить ваш репозиторий и извлечь модель домена (автоматически сгенерированную сущность EF) и отобразить ее в модель представления. Затем он передаст эту модель представления в представление.

1 голос
/ 05 марта 2016

Попробуй это.у меня это работает.

@Model.DtNews.Value.ToString ("dd-MM-yyyy")

1 голос
/ 12 июля 2011

Я бы просто бросил класс приятеля на model.DtNews

Класс приятелей украсит вашу существующую модель

[MetadataType(NewsMetadata)]
public partial class News // this is the same name as the News model from EF
{ /* ... */ }


/* Metadata type */
public class NewsMetadata
{
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
    public DateTime DtNews { get; set; }
}
0 голосов
/ 04 февраля 2014

Используйте это

@Html.TextBoxFor (m => m.MktEnquiryDetail.CallbackDate, "{0: дд / мм / гггг}")

0 голосов
/ 12 июля 2011

@Html.LabelFor(model => model.DtNews.ToString("dd/MM/yyyy"))

^ должен сделать трюк.

Вы также можете использовать шаблоны редактирования / отображения, как обсуждено здесь .

0 голосов
/ 12 июля 2011

Если DtNews является DateTime, попробуйте следующее:

@Html.LabelFor(model => model.DtNews.ToString("dd/MM/yyyy"));
...