Estou usando ASP.Net Core 7.0
e tentei mostrar DateTime.Now
na caixa Input mas não mostrou nada quando a página foi carregada.
Veja abaixo todos os meus códigos.
Modelo
public class DateShowVM
{
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
public DateTime TranDate { get; set; }
}
Ação
public IActionResult Index()
{
ViewBag.datenow = Convert.ToDateTime(DateTime.Now.ToString("dd/MM/yyyy"));
return View();
}
Visualizar
<div class="form-group">
<label asp-for="TranDate" class="control-label"></label>
<input asp-for="TranDate" value="@ViewBag.datenow" readonly class="form-control" />
<span asp-validation-for="TranDate" class="text-danger"></span>
</div>
O principal problema é que
ViewBag.datenow
pode ser. O .NET lidará automaticamente com essa conversão do formato de data e hora e do formato de entrada esperado no formato "dd/MM/yyyy". Talvez por incompatibilidade o problema esteja ocorrendo.Mude seu código
para
Isso deve resolver seu problema. Acho melhor usar um modelo para lidar com os dados.
Se você quiser mostrar APENAS (sem editar) uma data em formato específico na
<input>
tag é mais fácil de usartype="text"
:Leve em consideração que quando você está usando as
ViewBag
anotações de dados como você declarou naDateShowVM
classe se tornam inúteis. É necessário especificar o formato noToString("dd/MM/yyyy")
método.Mas ao usar a visualização fortemente tipada, a anotação de dados está no jogo. Portanto, basta aplicar o formato requerido ao imóvel.
Defina o modelo de dados e passe para a view:
O código de visualização:
Há muitas dúvidas no StackOverflow sobre o uso da
input
tag withtype="date"
, mas para suportar diferentes formatos de data é necessário escrever o código JavaScript.