Estou usando o atributo DataType.Date no meu modelo e um EditorFor no meu modo de exibição. Isso está funcionando bem no Internet Explorer 8 e no Internet Explorer 9 , mas no Google Chrome está mostrando um seletor de datas e, em vez de exibir o valor, apenas exibe "Mês / Dia / Ano" em texto cinza desbotado.
Por que o Google Chrome não exibe o valor?
Modelo:
[DataType(DataType.Date)]
public Nullable<System.DateTime> EstPurchaseDate { get; set; }
Visão:
<td class="fieldLabel">Est. Pur. Date</td>
<td class="field">@Html.EditorFor(m=>m.EstPurchaseDate)</td>
fonte
[DataType(DataType.Date)]
para que eu não tivesse que marcar todas essas propriedades separadamente com o risco de perder algumas?No MVC5.2, adicione Date.cshtml à pasta ~ / Views / Shared / EditorTemplates:
fonte
Como complemento à resposta de Darin Dimitrov:
Se você deseja que apenas essa linha em particular use um determinado formato (diferente do padrão), é possível usar no MVC5:
fonte
@
no começo, isso@Value = @Model.Property...
ainda precisa disso@
? Você quer dizer apenasnew { Value = Model.Property...
?No MVC 3, tive que adicionar:
entre usos ao adicionar propriedades:
Especialmente se você estiver adicionando essas propriedades no arquivo .edmx como eu. Descobri que, por padrão, os arquivos .edmx não possuem esse recurso, portanto, adicionar apenas propriedades não é suficiente.
fonte
Se você remover
[DataType(DataType.Date)]
do seu modelo, o campo de entrada no Chrome será renderizado comotype="datetime"
e também não mostrará o selecionador de data.fonte
date
. Usardatetime
como solução alternativa é inadequado, pois ele não representa os dados semântica.Eu ainda tinha um problema ao passar o formato aaaa-MM-dd, mas resolvi alterando o Date.cshtml:
fonte
string.Format("{0}/{1}/{2}")
obterdd/mm/yyyy
o formato, e funciona bem, eu usei banco de dados primeiro método, mas DisplayFormat não trabalhou com classe parcial, não sei por quê ?, qualquer um de qualquer maneira, se necessário tentar este método, eu não' t tentar, mas se alguém necessário, espero que ajudeO MVC4 DataType.Date EditorFor não exibirá o valor da data no Chrome, mas no IE
No modelo, você precisa ter o seguinte tipo de declaração:
OU
Você não precisa usar o seguinte atributo:
No Date.cshtml, use este modelo:
Diverta-se! Atenciosamente, Blerton
fonte
DisplayFormat
atributo 2) Altere o teste para verificar se o tipo de navegador é chrome, e faça@Html.EditorFor(m=>m.EstPurchaseDate)
3) Outra@Html.TextBox("EstPurchaseDate", dt.ToString("MM/dd/yyyy"))
Nota: no # 2, uma verificação melhor seria se o navegador entende HTML5, mas não sei como fazer isso.Se você precisar ter controle sobre o formato da data (em outras palavras, não apenas o formato aaaa-mm-dd é aceitável), outra solução poderia ser adicionar uma propriedade auxiliar do tipo string e adicionar um validador de data a essa propriedade e vincule a essa propriedade na interface do usuário.
E aqui está um validador de data:
fonte