No MVC razor, estou colocando a data atual no banco de dados assim ..
model.Returndate = DateTime.Now.Date.ToShortDateString();
Como o campo de banco de dados é um tipo de dados datetime e estou convertendo a data atual para o formato de string, isso não está funcionando .. como posso fazer isso? Estou fazendo o formato de string porque quero a data no formato mm / dd / aaaa e não no formato mm / dd / aaaa hh: mm: ss.
EDITAR:
No controlador eu tenho
var model = new ViewModel();
model.ReturnDate = DateTime.Now;
return PartialView("PartialView", model);
Na visão parcial, eu tenho
@Html.EditorFor(model => model.Returndate)
É aqui que está exibindo a data como Data e Hora juntas ... Eu quero apenas a data a ser exibida. Não é a hora. Espero que esta edição explique melhor.
c#
asp.net-mvc
asp.net-mvc-3
datetime
ZVenue
fonte
fonte
ToString("mm/dd/yyyy");
para poder ver exatamente o que você deseja.DateTime
. Você faz a formatação da string no OUTPUT ... Apenas formate para o visualizador final.Respostas:
Se o tipo de coluna for DateTime no SQL, ele armazenará um horário onde você passa um ou não.
Seria melhor salvar a data corretamente:
e, em seguida, formate-o quando precisar exibi-lo:
Ou se você estiver usando o EditorFor:
ou
Para adicionar uma propriedade ao seu modelo, adicione este código:
Em seguida, em seu PartialView:
EDITAR:
Olá pessoal, só quero esclarecer para esta resposta que, ao dizer 'Se você estiver usando EditorFor', significa que você precisa ter um modelo EditorFor para o tipo de valor que está tentando representar.
Modelos de editor são uma maneira legal de gerenciar controles repetitivos em MVC:
http://coding-in.net/asp-net-mvc-3-how-to-use-editortemplates/
Você pode usá-los para tipos ingênuos como String, como fiz acima; mas eles são especialmente ótimos para permitir que você modele um conjunto de campos de entrada para um tipo de dados mais complicado.
fonte
Só tive que lidar com este cenário sozinho - encontrei uma maneira realmente fácil de fazer isso, basta anotar sua propriedade no modelo assim:
Ele também ocultará o botão de hora do selecionador de data.
Desculpe se esta resposta está um pouco atrasada;)
fonte
Isso funciona se você deseja exibir em um TextBox:
fonte
A data / hora na base de dados não será uma versão formatada . Será apenas a própria data / hora. Como você exibe essa data / hora ao extrair o valor do banco de dados é uma questão diferente. Suspeito fortemente que você realmente só deseja:
ou possivelmente
Sim, se você olhar para o banco de dados usando SQL Server Studio ou qualquer outro, você verá agora a meia-noite - mas isso é irrelevante, e quando você busca a data do banco de dados e exibe para um usuário, então você pode aplicar o formato relevante .
EDITAR: Em relação à sua pergunta editada, o problema não é com o modelo - é como você especifica a visualização. Você deve usar algo como:
onde
d
é o especificador de formato de data e hora padrão para o padrão de data abreviada (o que significa que ele levará as configurações culturais atuais em consideração).Essa é a parte que venho dizendo repetidamente - que quando você exibe a data / hora para o usuário , é a hora de formatá-la como uma data sem hora.
EDIT: Se isso não funcionar, deve haver uma maneira de decorar o modelo ou visualização com uma string de formato - ou algo parecido. Não sou realmente uma pessoa MVC, mas parece que deve haver uma boa maneira de fazer isso declarativamente ...
fonte
Você pode modificar seu ViewModel conforme abaixo:
fonte
Você pode aplicar o formato de data e hora personalizado usando
ToString
como:Leituras adicionais sobre o
DateTime.ToString
padrão de formatos podem ser encontradas aqui e aqui .Editar: Após a edição da sua pergunta, assim como o outro sugeriu, você deve aplicar o formato de data em sua visualização:
fonte
model.Returndate.ToString("mm/dd/yyyy")
?Não tenho certeza no Razor, mas no ASPX você faz:
Deve haver algo semelhante no Razor. Espero que isso ajude alguém.
fonte
Se você tiver um loop for, como o abaixo.
Altere @ item.StartDate para @ item.StartDate.Value.ToShortDateString ()
Isso removerá o tempo caso você não consiga anotar sua propriedade no modelo como no meu caso.
fonte
Inclua anotações de dados como DisplayFormat e ApplyFormatInEditMode para obter a saída desejada.
[Display(Name = "Bill Date")] [DataType(DataType.Date)] [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)] public DateTime BillDate { get; set; }
Agora sua data de faturamento aparecerá como.
fonte
Você pode simplesmente converter a data e hora. Algo como:
fonte
Tive alguns problemas com as outras soluções desta página, por isso pensei em deixar isso aqui.
Portanto, você só precisa adicionar "{0: d}" no segundo parâmetro e pronto.
fonte