Inquiridor
gerar DateTime Automaticamente

Pergunta
-
Todas as Respostas
-
@DateTime.Now.ToShortDateString()
Isso vai inserir a data do dia neste formato d/m/aaaa
- Editado Marcoos Junior segunda-feira, 5 de setembro de 2016 01:32
- Marcado como Resposta A.FerreiraSS domingo, 11 de setembro de 2016 14:26
- Não Marcado como Resposta A.FerreiraSS domingo, 11 de setembro de 2016 14:26
-
Na sua própria Model você pode definir um valor padrão:
public DateTime Data {get; set;} = DateTime.Now;
Valeu!
Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!
André Secco
Microsoft MSP & MSDN Tech Advisor
Blog: http://andresecco.com.br
GitHub: http://github.com/andreluizsecco
Twitter: @andre_secco -
-
Depende,
Você está usando Entity Framework?
De qualquer forma quem decide se vai gravar é você. Só acho que fica mais legível você já definir um valor padrão na sua própria model para que assim que criar o registro (novo objeto da sua classe) o valor já venha preenchido sem ter que alimentá-lo toda vez. Se você estiver gravando no banco de dados a partir de um novo objeto que criou da sua classe, aí salvaria sim no banco.
Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!
André Secco
Microsoft MSP & MSDN Tech Advisor
Blog: http://andresecco.com.br
GitHub: http://github.com/andreluizsecco
Twitter: @andre_secco -
Devo estar fazendo alguma coisa errada, continua aparecendo apenas um campo vazio.
public partial class teste { [Key] public int Codigo { get; set; } public string Nome { get; set; } public DateTime DataCadastro { get; set; } = DateTime.Now; }
<div class="form-group"> @Html.LabelFor(model => model.DataCadastro, htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.EditorFor(model => model.DataCadastro, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.DataCadastro, "", new { @class = "text-danger" }) </div> </div>
-
Inicializa no constrututor, da seguinte forma: public partial class teste { public teste() { DataCadastro = new DateTime.Now(); } [Key] public int Codigo { get; set; } public string Nome { get; set; } public DateTime DataCadastro { get; set; } }
-
E sua Controller como está?
Você está na View de Edit ou de Create?
Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!
André Secco
Microsoft MSP & MSDN Tech Advisor
Blog: http://andresecco.com.br
GitHub: http://github.com/andreluizsecco
Twitter: @andre_secco -
é a view Create
o controller eu não mexi
public class testesController : Controller { private BANCOTESTEEntities1 db = new BANCOTESTEEntities1(); // GET: testes public ActionResult Index() { return View(db.teste.ToList()); } // GET: testes/Details/5 public ActionResult Details(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } teste teste = db.teste.Find(id); if (teste == null) { return HttpNotFound(); } return View(teste); } // GET: testes/Create public ActionResult Create() { return View(); } // POST: testes/Create // To protect from overposting attacks, please enable the specific properties you want to bind to, for // more details see http://go.microsoft.com/fwlink/?LinkId=317598. [HttpPost] [ValidateAntiForgeryToken] public ActionResult Create([Bind(Include = "Codigo,Nome,DataCadastro")] teste teste) { if (ModelState.IsValid) { db.teste.Add(teste); db.SaveChanges(); return RedirectToAction("Index"); } return View(teste); } // GET: testes/Edit/5 public ActionResult Edit(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } teste teste = db.teste.Find(id); if (teste == null) { return HttpNotFound(); } return View(teste); } // POST: testes/Edit/5 // To protect from overposting attacks, please enable the specific properties you want to bind to, for // more details see http://go.microsoft.com/fwlink/?LinkId=317598. [HttpPost] [ValidateAntiForgeryToken] public ActionResult Edit([Bind(Include = "Codigo,Nome,DataCadastro")] teste teste) { if (ModelState.IsValid) { db.Entry(teste).State = EntityState.Modified; db.SaveChanges(); return RedirectToAction("Index"); } return View(teste); } // GET: testes/Delete/5 public ActionResult Delete(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } teste teste = db.teste.Find(id); if (teste == null) { return HttpNotFound(); } return View(teste); } // POST: testes/Delete/5 [HttpPost, ActionName("Delete")] [ValidateAntiForgeryToken] public ActionResult DeleteConfirmed(int id) { teste teste = db.teste.Find(id); db.teste.Remove(teste); db.SaveChanges(); return RedirectToAction("Index"); } protected override void Dispose(bool disposing) { if (disposing) { db.Dispose(); } base.Dispose(disposing); } }
-
Você está se referindo que no momento ANTES de inserir não aparece a data no campo de texto, pois bem não irá aparecer mesmo, pois o valor só será preenchido no momento que clicar em CRIAR. E se é um valor que o usuário nem irá alterar nem tem porque mostrar na tela. Eu tiraria ele da tela e a controller deixaria assim:
public class testesController : Controller { private BANCOTESTEEntities1 db = new BANCOTESTEEntities1(); // GET: testes public ActionResult Index() { return View(db.teste.ToList()); } // GET: testes/Details/5 public ActionResult Details(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } teste teste = db.teste.Find(id); if (teste == null) { return HttpNotFound(); } return View(teste); } // GET: testes/Create public ActionResult Create() { return View(); } // POST: testes/Create // To protect from overposting attacks, please enable the specific properties you want to bind to, for // more details see http://go.microsoft.com/fwlink/?LinkId=317598. [HttpPost] [ValidateAntiForgeryToken] public ActionResult Create([Bind(Include = "Codigo,Nome")] teste teste) { if (ModelState.IsValid) { db.teste.Add(teste); db.SaveChanges(); return RedirectToAction("Index"); } return View(teste); } // GET: testes/Edit/5 public ActionResult Edit(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } teste teste = db.teste.Find(id); if (teste == null) { return HttpNotFound(); } return View(teste); } // POST: testes/Edit/5 // To protect from overposting attacks, please enable the specific properties you want to bind to, for // more details see http://go.microsoft.com/fwlink/?LinkId=317598. [HttpPost] [ValidateAntiForgeryToken] public ActionResult Edit([Bind(Include = "Codigo,Nome")] teste teste) { if (ModelState.IsValid) { db.Entry(teste).State = EntityState.Modified; db.SaveChanges(); return RedirectToAction("Index"); } return View(teste); } // GET: testes/Delete/5 public ActionResult Delete(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } teste teste = db.teste.Find(id); if (teste == null) { return HttpNotFound(); } return View(teste); } // POST: testes/Delete/5 [HttpPost, ActionName("Delete")] [ValidateAntiForgeryToken] public ActionResult DeleteConfirmed(int id) { teste teste = db.teste.Find(id); db.teste.Remove(teste); db.SaveChanges(); return RedirectToAction("Index"); } protected override void Dispose(bool disposing) { if (disposing) { db.Dispose(); } base.Dispose(disposing); } }
Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!
André Secco
Microsoft MSP & MSDN Tech Advisor
Blog: http://andresecco.com.br
GitHub: http://github.com/andreluizsecco
Twitter: @andre_secco -
-
Provavelmente está retornando que é uma operação inválida pois possui algum tipo de validação para esse campo (O que não vejo o porquê), uma vez que o valor sempre será preenchido com o valor da data atual.
Tenta retirar essa linha:
@Html.ValidationMessageFor(model => model.DataCadastro, "", new { @class = "text-danger" })
Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!
André Secco
Microsoft MSP & MSDN Tech Advisor
Blog: http://andresecco.com.br
GitHub: http://github.com/andreluizsecco
Twitter: @andre_secco -
-
Consegui da seguinte forma
Na classe
public partial class teste { [Key] public int Codigo { get; set; } public string Nome { get; set; } public DateTime DataCadastro { get; set; } = DateTime.Now.Date; }
No controller
[HttpPost]
public ActionResult Create(Teste teste)
{teste.DataCadastro = DateTime.Now.Date;
if (ModelState.IsValid)
{
db.Teste.Add(teste);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(teste);
}No model a propriedade DataCadastro foi necessário receber o parâmetro DateTime.Now pois estava aparecendo uma mensagem de erro de conversão ao salvar na edição dos cadastros, ao passar o parâmetro para a propriedade DataCadastro a mesma ficou definida com o tipo de dado certo.
No controller, dentro da Action create eu chamei a propriedade e passei novamente o parâmetro para ela, assim ela recebe o valor e logo após já entra no IF para salvar. Porém, não consegui mostrar no cadastro o valor da data, que no caso para o meu sistema não tem importância.
Agradeço quem ajudou.