Estou tendo problemas para exibir a única parte da data de um DateTime em uma caixa de texto usando TextBoxFor <,> (expression, htmlAttributes).
O modelo é baseado no Linq2SQL, o campo é um DateTime no SQL e no modelo de entidade.
Falha:
<%= Html.TextBoxFor(model => model.dtArrivalDate, String.Format("{0:dd/MM/yyyy}", Model.dtArrivalDate))%>
Esse truque parece ser depreciado, qualquer valor de string no objeto htmlAttribute é ignorado.
Falha:
[DisplayFormat( DataFormatString = "{0:dd/MM/yyyy}" )]
public string dtArrivalDate { get; set; }
Gostaria de armazenar e exibir apenas a parte da data na exibição de detalhes / edição, sem a parte "00:00:00".
asp.net-mvc
Kronos
fonte
fonte
@Html.EditorFor(m => m.IssueDate)
ea formatação do modelo é aplicado como[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}" )]
mas a data ainda é mostrado como01/01/0001 12:00:00 AM
O MVC4 resolveu esse problema adicionando uma nova
TextBoxFor
sobrecarga, que requer um parâmetro de formato de sequência. Agora você pode simplesmente fazer isso:Há também uma sobrecarga que requer atributos html, para que você possa definir a classe CSS, conectar datapickers, etc:
fonte
@Html.TextBoxFor(m => m.SomeDate, "{0:MM/dd/yyyy}", new { @id="datepicker" })
[DisplayFormat]
atributo do modelo . Ainda bem que há pelo menos uma substituição no TextBoxFor (e que você me alertou sobre isso).@Html.TextBoxFor(model => model.CDate, "{0:dd.MM.yyyy}")
mas no httpPost eu recebo dados como MM.dd.aaaa. Como resolver isso?input[type=date]
especificações requerem"{0:yyyy-MM-dd}"
formato.fonte
@Value = (Model.DateBecamePermanentResident == null ? "" : Model.DateBecamePermanentResident.Value.ToString("dd.MM.yyyy"))
Ou use os ajudantes não digitados:
fonte
@Html.TextBoxFor(model => model.EndDate, "{0:d}", new { type = "date" })
Isso funcionou para mim.
fonte
Não tenha medo de usar HTML bruto.
fonte
TextBoxFor
ouEditorFor
formatar o valor de qualquer maneira. Veja a minha pergunta: TextBoxFor dia mixagens auxiliares e mês em datasTL; DR;
Aplicar
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy-MM-dd}")]
não funcionou para mim!Explicação:
Para exibir uma propriedade de data do seu modelo usando
Html.TextBoxFor
:Data da propriedade da sua classe de modelo:
Nada mais é necessário no lado do modelo.
No Razor você faz:
Explicação:
A data de um
input
elemento html do tipodate
deve ser formatada em relação à ISO8601 , que é:yyyy-MM-dd
Minha experiência é que o idioma não é determinado pelo
Accept-Language
cabeçalho, mas pelo idioma de exibição do navegador ou pelo sistema do sistema operacional.fonte
Você também pode usar os atributos do HTML 5 aplicando esta anotação de dados:
Mas o problema é que isso permite um seletor de datas específico do navegador para navegadores HTML 5. Você ainda precisa do seu seletor de datas para navegadores sem suporte e, em seguida, verifique se o seletor de datas não aparece além do navegador (o Modernizr pode fazer isso facilmente) ou oculte o navegador, se aparecer (complicado e eu não sei como os métodos confiáveis que vi foram).
No final, eu fui com o Alex porque meu ambiente atual não possui o Modernizr, mas se tivesse, eu teria usado isso para mostrar condicionalmente apenas o meu seletor de dados se o navegador já não tivesse suporte.
fonte
Para mim, eu precisava manter o
TextboxFor()
porque usarEditorFor()
alterações o tipo de entrada até a data. O qual, no Chrome, adiciona um seletor de datas integrado, que danificou o seletor de datas do jQuery que eu já estava usando. Portanto, para continuar usandoTextboxFor()
AND apenas com a data, você pode fazer isso:fonte
O atributo DisplayFormat não funcionou para mim em nenhum dos formulários no carregamento inicial. Criei um EditorTemplate:
fonte
O Editor de modelos funcionará apenas para fins de exibição. Se você usar o mesmo editor (o que faz sentido porque é um editor) e fornecer um valor como 31/01/2010 - você receberá uma mensagem de erro informando que o formato é inválido.
fonte
Eu uso Globalizar para trabalhar com muitos formatos de data, então use o seguinte:
Isso ajustará automaticamente o formato da data às configurações de localidade do navegador.
fonte
Lembre-se de que a exibição dependerá da cultura. E embora na maioria dos casos todas as outras respostas estejam corretas, isso não funcionou para mim. O problema de cultura também causará problemas diferentes com o datepicker do jQuery, se anexado.
Se você deseja forçar a saída do formato
/
da seguinte maneira:Se não escapou para mim, mostra
08-01-2010
vs. esperado08/01/2010
.Além disso, se não tiver escapado, o dateQuicker do jQuery selecionará diferentes defaultDate, na minha instância foi
May 10, 2012
.fonte
Se você estiver usando o selecionador de data do Bootstrap, poderá adicionar o atributo data_date_format como abaixo.
fonte
// data e hora são exibidos na dataPicker é 24/11/2011 12:00:00
// você pode dividir isso por espaço e definir o valor somente para data
Roteiro:
Marcação:
Espero que isso ajude ..
fonte
Claro que você pode usar o Html.EditorFor. Mas se você quiser usar TextBoxFor e usar o formato do atributo DisplayFormat, poderá usá-lo desta maneira:
ou crie a próxima extensão:
fonte
Basta adicionar ao lado do seu modelo.
fonte
Ao usar auxiliares de marca no ASP.NET Core, o formato precisa ser especificado no formato ISO. Se não for especificado como tal, os dados de entrada encadernados não serão exibidos corretamente e serão mostrados em mm / dd / aaaa sem valor.
Modelo:
Visão:
O formato também pode ser especificado na exibição usando o atributo asp-format.
O HTML resultante terá a seguinte aparência:
fonte
Você pode usar o código abaixo para imprimir o tempo no formato HH: mm . No meu caso, o tipo de propriedade é TimeSpan. Portanto, o valor está chegando no formato HH: mm: tt, mas eu tenho que mostrar no formato acima. HH: mm
fonte
Se você insistir em usar o
[DisplayFormat]
, mas não estiver usando o MVC4, poderá usar o seguinte:fonte