none
Editar registro RRS feed

  • Pergunta

  • Bom dia, estou com uma dúvida, meio boba porém não entendi porque acontece isto.

    Vamos lá:

    Estou listando os dados de um objeto na View, para editar o mesmo, usando o código abaixo:

            public ActionResult Editar(int id)
            {
                EPIGrupo _EPIGrupo = db.EPIGrupo.Find(id);
                return View(_EPIGrupo);
            }

    E depois no salvar faço:

            [HttpPost]
            public ActionResult Editar(EPIGrupo model)
            {
                if (ModelState.IsValid)
                {
                    db.Entry(model).State = EntityState.Modified;
                    CamposGenericos.AtribuirValores(model, "A");
                    db.SaveChanges();
                    return RedirectToAction("Index");
                }
                return View(model);
            }

    Porém o model não vem com todos os campos do objeto. Porque? Tenho que colocar todos os campos como Hidden? Ou devo pegar o ID no post, buscar em uma variavel e depois salvar?

    O código da view está aqui em baixo:

    @model ERP.Models.EPIGrupo
    
    @{
        ViewBag.Title = "Inserir EPI - Grupo";   
    }
    
    <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
    
    @using (Html.BeginForm())
    {
         @Html.HiddenFor(model => model.GrupoID)
        
        <div class="linha">
            <div class="coluna_rotulo_centro" style="width:125px">@Html.LabelFor(m => m.Sigla):</div>
            <div class="coluna_campo" style="width:250px">@Html.TextBoxFor(m => m.Sigla, new { style = "width:250px;" })</div>
            <div class="coluna_msg">@Html.ValidationMessageFor(m => m.Sigla)</div>
        </div>    
        
        <div class="linha">
            <div class="coluna_rotulo_centro" style="width:125px">@Html.LabelFor(m => m.Descricao):</div>
            <div class="coluna_campo" style="width:250px">@Html.TextBoxFor(m => m.Descricao, new { style = "width:250px;" })</div>
            <div class="coluna_msg">@Html.ValidationMessageFor(m => m.Descricao)</div>
        </div>        
               
        <div class="linha">
            <input type="submit" value="Cadastrar" />
        </div>    
    }

    Abs...



    Marlon Tiedt
    www.sesmt.com.br

    segunda-feira, 25 de junho de 2012 13:26

Respostas

  • Opa, boa tarde
     O objeto só vai retornar preenchido os campos que você implementou na VIEW
    Você não é obrigado a declarar todos os campos.

    Você pode declarar os campos que não quer preencher como hidden ou fazer como no exemplo abaixo.

    Basicamente o UpdateModel atualiza o objeto com os campos que foram modificados na View.

    public ActionResult Editar(int id, FormCollection form){
     EPIGrupo grupo = repositorio.Get(id); // sua implementação
     UpdateModel(grupo)
    
     if (ModelState.IsValid)
       //codigo
     }
    }




    Não esqueça de marcar o post como útil caso tenha te ajudado.


    • Editado Marco Souza segunda-feira, 25 de junho de 2012 18:18
    • Marcado como Resposta Marlon Tiedt terça-feira, 26 de junho de 2012 11:48
    segunda-feira, 25 de junho de 2012 18:11

Todas as Respostas

  • Opa, boa tarde
     O objeto só vai retornar preenchido os campos que você implementou na VIEW
    Você não é obrigado a declarar todos os campos.

    Você pode declarar os campos que não quer preencher como hidden ou fazer como no exemplo abaixo.

    Basicamente o UpdateModel atualiza o objeto com os campos que foram modificados na View.

    public ActionResult Editar(int id, FormCollection form){
     EPIGrupo grupo = repositorio.Get(id); // sua implementação
     UpdateModel(grupo)
    
     if (ModelState.IsValid)
       //codigo
     }
    }




    Não esqueça de marcar o post como útil caso tenha te ajudado.


    • Editado Marco Souza segunda-feira, 25 de junho de 2012 18:18
    • Marcado como Resposta Marlon Tiedt terça-feira, 26 de junho de 2012 11:48
    segunda-feira, 25 de junho de 2012 18:11
  • Valeu...funcionou perfeitamente...

    Atenciosamente


    Marlon Tiedt
    www.sesmt.com.br

    terça-feira, 26 de junho de 2012 11:48
  • Marlon..  

    Quando voce chamou a entidade e passou para a VIEW..

    Esta não retorna de forma correta, ou seja,   a entidade que voce pesquisou nao e a mesma que voce pode salvar.

    Como voce mesmo disse, falta campos.

    Uma dica..

    Na hora de salvar chame novamente a entidade e atribua os campos que realmente vao fazer mudanças.

    Espero que ajude, 

    abraços


    http://fparmezani.wordpress.com

    sábado, 30 de junho de 2012 23:29