none
Partial View - Cadastrar na view e listar na partial view RRS feed

Todas as Respostas

  • Olá,

    Vc pode utilizar os comandos Html.RenderPartial ou Html.Partial para tal finalidade.

    Att,

    quarta-feira, 29 de janeiro de 2014 14:04
  • o problema é que quando retorno uma lista na partial e a view está esperando uma model. ]

    assim:

    view para cadastro.

    @model HondaPosVenda.Models.DepartamentoViewModel

    @using (Html.BeginForm("Departamento", "Usuario", FormMethod.Post, new { enctype = "multipart/form-data" })) { @Html.ValidationSummary(true) <h1>Departamento</h1> <span class="action">Novo Cadastro</span><br /> <fieldset> <table border="0" width="100%"> <tr> <td width="26%"> <label>Tipo </label> <input name="w2" type="checkbox" value="w2" class="checkbox" title="2W" @(Model.Sistema2w == "w2" ? "checked=\"checked\"" : "") /> <label>2W</label> <input name="w4" type="checkbox" value="w4" class="checkbox" title="4W" @(Model.Sistema4w == "w4" ? "checked=\"checked\"" : "") /> <label>4W</label> <font size="1" color="red"><strong >@ViewData["Empresas"]</strong></font> </td> <td> <label>Departamento </label> @Html.TextBox("departamentoViewModel.DesSetor", "", new { @class = "textbox width250", id = "Departamento", @title = "Departamento" }) @Html.ValidationMessageFor(model => model.DesSetor)  </td> <td width="22%"> <label>Fale Conosco </label> <input type="radio" name="departamentoViewModel.flg_FaleConosco" value="@(Model.flg_FaleConosco = true)" checked="checked" class="radio" title="Sim" /> <label>Sim</label> <input type="radio" name="departamentoViewModel.flg_FaleConosco" value="departamentoViewModel.flg_FaleConosco" class="radio" title="Não" /> <label>Não</label> </td> </tr> <tr> <td colspan="3" class="center"> <br /><input type="image" src="@(Common.Util.Root)Content/themes/base/images/bt_salvar.jpg" alt="Salvar" title="Salvar" /> @*<img src="@(Common.Util.Root)Content/themes/base/images/bt_salvar.jpg" alt="Salvar" title="Salvar" />*@ </td> </tr> </table> </fieldset> Aqui eu renderizo a partial: @Html.Partial("DepartamentoPartial", Model.listaDepartamento)

    Controller

     public ActionResult Departamento()
            {
                
    
                var model = new DepartamentoViewModel
                {
                    listaDepartamento = _setorSistema.GetAll().ToList()
                };
    
                return View(model);           
            }

    viewmodel

    public partial class DepartamentoViewModel
        {
            public int id_Setor { get; set; }
            public string DesSetor { get; set; }
            public bool flg_FaleConosco { get; set; }
            public Int16 Id_Sistema { get; set; }
            public string Sistema { get; set; }
            public string Sistema2w { get; set; }
            public string Sistema4w { get; set; }
            public List<SetorSistema> listaDepartamento { get; set; }       
    
        }
    Minha Partial view

    @model IEnumerable<HondaPosVenda.Models.DepartamentoViewModel>

    <table> <tr> <th> Site </th> <th> Departamento </th> <th> Fale Conosco </th> <th> Ações </th> <th></th> </tr> @foreach (var item in Model) { <tr> <td> @item.Sistema </td> <td> @item.DesSetor </td> <td> @item.flg_FaleConosco </td> </tr> } </table>


    ou seja eu retorno uma lista, mas preciso esperar uma model para cadastrar por isso gera o erro.

    Queria saber uma forma de Cadastrar e listar com uma partial view na mesma tela.

    Grato,

    quarta-feira, 29 de janeiro de 2014 15:03
  • Olá,

    Vc retornando só o model ao invés de uma lista não dá certo ?

     @Html.Partial("DepartamentoPartial", Model)

    E qual erro está dando ai ?

    quarta-feira, 29 de janeiro de 2014 16:14
  • ele reclama que a view espera uma model e está chegando uma lista e se eu inverter a mesma coisa.
    quarta-feira, 29 de janeiro de 2014 16:38
  • Na Ver Minha ta ASSIM

    @ HPecas.Models.DepartamentoViewModel modelo

    na Minha parcial ta ASSIM

    @ Model IEnumerable <HPecas.Models.DepartamentoViewModel>

    porqué Na Ver eu Preciso Cadastrar e na Listar Vai parcial.


    • Editado cleiton costa quarta-feira, 29 de janeiro de 2014 17:52
    quarta-feira, 29 de janeiro de 2014 16:40
  • Olá Cleiton!,

    Deixa ver se entendi oque vc quer fazer.

    Você quer cadastrar um departamento e logo depois, quer ver uma lista como os departamentos cadastrados (incluindo o ultimo cadastro), embaixo do formulario de cadastro mas sem sair da View de cadastro. ¿É isso?

                                                      

    sexta-feira, 31 de janeiro de 2014 03:25
  • Isso mesmo, certinho..

    mas estava querendo listar em uma partial view

    sexta-feira, 31 de janeiro de 2014 15:31
  • Você pode utilizar um framework JS chamado KnockouJS no VS2012 tem um exemplo bem prático de como fazer isso.

    Através dele, vc terá um bind automática da nova lista quando for adicionado na lista (view).

    Lembrando que você pode daí optar de 2 maneiras para atualizar no controller. Uma é definindo um botão que recuperará a model da view e fará a inserção. ou via ajax.


    a solução via ajax, serve tbm para vc retornar a nova partialview e substituir essa grid
    sexta-feira, 31 de janeiro de 2014 15:45
  • E ae Cleiton!

    Aqui tenho um exemplo basico que vc pode usar:

    No controller

     [HttpGet]
            public ActionResult Cadastrar()
            {
                var model = new DepartamentoViewModel
                {
                    listaDepartamento = _setorSistema.GetAll().ToList()
                };
    
                return View(model);           
            }
            [HttpPost]
    
            public ActionResult Cadastrar()
            {
                /// sua logica paqra cadastrar o departamento
    
                return  RedirectToAction("CadastrarPartial","NomeController");
            }
    
            [HttpGet]
            public ActionResult CadastrarPartial()
            {
                //sua logica para exibir os dados e carregar o Model
                return PartialView(Model);
            }

    Na View

    @using (Ajax.BeginForm("Cadastrar", "NomeController", FormMethod.Post, new AjaxOptions { UpdateTargetId = "lista" }))
    {
    @* aqui vai a logica do seo formulario, todos os controles *@
        <input type="submit" value="Cadastrar" />
    }
    
    <div id="lista">
        @Html.Action("NomeAction", "NomeController")
    
    </div>

    Boa sorte :)


    • Editado Richof sábado, 1 de fevereiro de 2014 03:48
    sábado, 1 de fevereiro de 2014 02:17