O que há de errado com o seguinte?
@Convert.ToDateTime((@item.Date.ToShortDateString())," dd - M - yy")
@ item.Date está exibindo 20/11/2005 às 12:00 e desejo exibir 20 de novembro de 2011
asp.net-mvc-3
razor
Aprendendo
fonte
fonte
Respostas:
Experimentar:
ou você pode usar o
[DisplayFormat]
atributo em seu modelo de visualização:e na sua visão simplesmente:
fonte
Esta é a solução:
Antes de ToString (), use Value .
fonte
@(item.DOB?.ToString("dd-MMM-yyyy"))
. Ou usando a propriedade HasValue -@(item.DataDate.HasValue ? item.DataDate.Value.Date.ToString("dd MMM yyyy") : null)
. Em ambos os casos, a propriedade deve ser datetime anulável.Experimente isso no MVC 4.0
fonte
O atributo [DisplayFormat] é usado apenas em EditorFor / DisplayFor, e não pelas APIs HTML brutas como TextBoxFor. Eu consegui fazer o seguinte,
Modelo:
Visão:
Saída: 30/12/2011
Link relacionado:
http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.displayformatattribute.applyformatineditmode.aspx
fonte
O código abaixo irá ajudá-lo
fonte
Para o Razor coloque o arquivo DateTime.cshtml na pasta Views / Shared / EditorTemplates. DateTime.cshtml contém duas linhas e produz um TextBox com uma data formatada 11/09/2001.
fonte
Em geral, o mês escrito tem escape como MMM, o ano de 4 dígitos como aaaa, então sua string de formato deve ser semelhante a "dd MMM aaaa"
fonte
Não consegui fazer isso funcionar inteiramente com base nas sugestões acima. Incluindo o DataTypeAttribute
[DataType(DataType.Date)]
pareceu resolver meu problema, consulte:Modelo
Visão
HTH
fonte
Para todas as soluções fornecidas, quando você tenta isso em um navegador moderno (como o FF), e você configurou o modelo correto
mvc (5) irá renderizar (o tipo de entrada é definido para a data com base nas configurações de data em seu modelo!)
E o navegador mostrará
Para corrigir isso, você precisa alterar o tipo para texto em vez de data (também se quiser usar seu calendário personalizado)
fonte