Em uma View Create crio um novo registro e nele há dois atributos: Criador e DataDaCriacao.
Os dois são obtidos do próprio sistema: Id do usuário logado e a data de hoje.
Como faço para que eles sejam considerados no Bind?
Tenho o controller da Action Create assim:
public ActionResult Create()
{
ViewBag.TipoTarefaID = new CBMMSapp.DAO.TiposTarefaDAO().ListaParaDropDown();
//Ao inves de apresentar uma lista, já carregar direto o usuario logado
ViewBag.ApplicationUserId = User.Identity.GetUserId();
ViewBag.Usuario = new CBMMSapp.DAO.UsuariosDAO().GetUser(User.Identity.GetUserId());
//E a data de criação também será inserida automaticamente.
ViewBag.DataCriacao = DateTime.Now;
return View();
}
// POST: Tarefas/Create
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "ID,TipoTarefaID,Assunto,DataCriacao,ApplicationUserId")] Tarefa tarefa)
{
if (ModelState.IsValid)
{
db.Tarefas.Add(tarefa);
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.TipoTarefaID = new CBMMSapp.DAO.TiposTarefaDAO().ListaParaDropDown( tarefa.TipoTarefaID);
ViewBag.ApplicationUserId = User.Identity.GetUserId();
ViewBag.DataCriacao = DateTime.Now;
return View(tarefa);
}
E na View Create tentei DisplayFor (mostrando o nome do usuário e a data) ou HiddenFor (para pelo menos ter a informação no submit) mas nada funcionou:
<div class="form-group">
@Html.LabelFor(model => model.DataCriacao, "Data da Inserção" , htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DisplayFor(model => model.DataCriacao)
@Html.HiddenFor(model => model.DataCriacao)
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.ApplicationUserId, "Criador", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DisplayFor(model => model.Usuario.Nome)
@Html.HiddenFor(model => model.ApplicationUserId)
</div>
</div>
Quando a View Create é renderizada nenhum dos dois valores aparecem no DisplayFor
Nem as duas informações estão no resultado do Bind do ResultAction Create.
E quando o ModelState.IsValid() é aplicado, sempre falha e nenhuma mensagem de validação aparece na tela.