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...
 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

Ricardo

Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar