Campos (automaricos) recebem valor null após o Edit ...
17/03/2016
0
Boa tarde,
Estou iniciando agora e estou com algumas dificuldades, no meu banco de dados tenho alguns campos que não são inseridos pelo usuário, como o Status, por exemplo, e quando eu vou editar algum registro o conteúdo da coluna Status como nulo...
Esse é o código da action editar...
Acho que se eu tivesse uma coluna onde eu guardasse a data de cadastro do funcionários ela tbm receberia o valor nulo após a execução do comando.
Eu poderia passar novamente o valor do Status aqui (funcionario.StatusFunc = "Ativo"), mas acho q isso é meio que gambiarra...
Eu tenho que falar quais campos podem ser alterados, como no update do sql? como eu faço isso?
Essa é a minha view de edição...
Eu tirei o trecho referente ao Status, pois esse campo só é alterado
<div class="editor-label">
@Html.LabelFor(model => model.StatusFunc)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.StatusFunc)
@Html.ValidationMessageFor(model => model.StatusFunc)
</div>
Qual é forma correta para eu fazer o update no banco de dados sem sobrescrever o valor dos campos que não foram passados?
Alguém poderia me ajudar?
Obrigado.
Estou iniciando agora e estou com algumas dificuldades, no meu banco de dados tenho alguns campos que não são inseridos pelo usuário, como o Status, por exemplo, e quando eu vou editar algum registro o conteúdo da coluna Status como nulo...
Esse é o código da action editar...
public ActionResult Editar(long id) { Funcionarios funcionario = db.Funcionarios.Find(id); ViewBag.IDArea = new SelectList(db.Areas, "IDArea", "Nome"); ViewBag.IDCargo = new SelectList(db.Cargos, "IDCargo", "Nome"); ViewBag.IDEmpregador = new SelectList(db.Empregadores, "IDEmpregador", "Nome"); return View(funcionario); } [HttpPost] public ActionResult Editar(Funcionarios funcionario) { if (ModelState.IsValid) { funcionario.UltimaAtualizacao = DateTime.Now; db.Entry(funcionario).State = EntityState.Modified; db.SaveChanges(); return RedirectToAction("Index"); } return View(funcionario); }
Acho que se eu tivesse uma coluna onde eu guardasse a data de cadastro do funcionários ela tbm receberia o valor nulo após a execução do comando.
Eu poderia passar novamente o valor do Status aqui (funcionario.StatusFunc = "Ativo"), mas acho q isso é meio que gambiarra...
Eu tenho que falar quais campos podem ser alterados, como no update do sql? como eu faço isso?
Essa é a minha view de edição...
@model AppFuncionarios.Models.Funcionarios @{ ViewBag.Title = "Editar"; } <h2>Editar</h2> @using (Html.BeginForm()) { @Html.ValidationSummary(true) <fieldset> <legend>Funcionarios</legend> @Html.HiddenFor(model=> model.IDFuncionario) <div class="editor-label"> @Html.LabelFor(model => model.Nome) </div> <div class="editor-field"> @Html.EditorFor(model => model.Nome) @Html.ValidationMessageFor(model => model.Nome) </div> <div class="editor-label"> @Html.LabelFor(model => model.Registro) </div> <div class="editor-field"> @Html.EditorFor(model => model.Registro) @Html.ValidationMessageFor(model => model.Registro) </div> <div class="editor-label"> @Html.LabelFor(model => model.Ramal) </div> <div class="editor-field"> @Html.EditorFor(model => model.Ramal) @Html.ValidationMessageFor(model => model.Ramal) </div> <div class="editor-label"> @Html.LabelFor(model => model.DTNasc) </div> <div class="editor-field"> @Html.EditorFor(model => model.DTNasc) @Html.ValidationMessageFor(model => model.DTNasc) </div> <div class="editor-label"> @Html.LabelFor(model => model.IDArea) </div> <div class="editor-field"> @Html.DropDownList("IDArea") @Html.ValidationMessageFor(model => model.IDArea) </div> <div class="editor-label"> @Html.LabelFor(model => model.IDCargo) </div> <div class="editor-field"> @Html.DropDownList("IDCargo") @Html.ValidationMessageFor(model => model.IDCargo) </div> <div class="editor-label"> @Html.LabelFor(model => model.IDEmpregador) </div> <div class="editor-field"> @Html.DropDownList("IDEmpregador") @Html.ValidationMessageFor(model => model.IDEmpregador) </div> <div class="editor-label"> @Html.LabelFor(model => model.DTAdmissao) </div> <div class="editor-field"> @Html.EditorFor(model => model.DTAdmissao) @Html.ValidationMessageFor(model => model.DTAdmissao) </div> <div class="editor-label"> @Html.LabelFor(model => model.HrEntra) </div> <div class="editor-field"> @Html.EditorFor(model => model.HrEntra) @Html.ValidationMessageFor(model => model.HrEntra) </div> <div class="editor-label"> @Html.LabelFor(model => model.Hrsai) </div> <div class="editor-field"> @Html.EditorFor(model => model.Hrsai) @Html.ValidationMessageFor(model => model.Hrsai) </div> <div class="editor-label"> @Html.LabelFor(model => model.DataDesligamento) </div> <div class="editor-field"> @Html.EditorFor(model => model.DataDesligamento) @Html.ValidationMessageFor(model => model.DataDesligamento) </div> <div class="editor-label"> @Html.LabelFor(model => model.TipoFunc) </div> <div class="editor-field"> @Html.EditorFor(model => model.TipoFunc) @Html.ValidationMessageFor(model => model.TipoFunc) </div> <div class="editor-label"> @Html.LabelFor(model => model.CPF) </div> <div class="editor-field"> @Html.EditorFor(model => model.CPF) @Html.ValidationMessageFor(model => model.CPF) </div> <p> <input type="submit" value="Salvar" /> </p> </fieldset> } <div> @Html.ActionLink("Back to List", "Index") </div>
Eu tirei o trecho referente ao Status, pois esse campo só é alterado
<div class="editor-label">
@Html.LabelFor(model => model.StatusFunc)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.StatusFunc)
@Html.ValidationMessageFor(model => model.StatusFunc)
</div>
Qual é forma correta para eu fazer o update no banco de dados sem sobrescrever o valor dos campos que não foram passados?
Alguém poderia me ajudar?
Obrigado.
Ricardo
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)