Array
(
)

Campos (automaricos) recebem valor null após o Edit ...

Ricardo
   - 17 mar 2016

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...
#Código 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...
#Código@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.