none
ASP.NET CORE 3.1 MVC RRS feed

  • Pregunta

  • Buenas tardes, estoy haciendo un proyecto en ASP.NET Core MVC 3.1, y tengo el siguiente problema, en la View Index tengo un tab con dos pestañas en una de ellas esta la lista de empleados y la otra pestaña donde estara la insercion o la actualizacion el detalle es que tengo problemas, ya que no encuentro el codigo 

    @HTML.Action("ViewAll")

    me parece que lo sacaron ese codigo, lo que trate de hacer es usar vistas parciales pero a un asi me da error la vista index es donde tengo el nav tab 

    el  codigo de esta vista 

    @{
        ViewData["Title"] = "Index";
    }
    
    <ul class="nav nav-tabs" id="myTab" role="tablist">
        <li class="nav-item" role="presentation">
            <a class="nav-link" data-toggle="tab" href="#firstTab" role="tab" aria-controls="firstTab" aria-selected="true">View All</a>
        </li>
        <li class="nav-item" role="presentation">
            <a class="nav-link active" data-toggle="tab" href="#secondTab" role="tab" aria-controls="secondTab" aria-selected="false">Add New</a>
        </li>
    </ul>
    
    <div class="tab-content" id="myTabContent">
        <div class="tab-pane fade" id="firstTab" role="tabpanel" aria-labelledby="home-tab">
            @{await Html.RenderPartialAsync("_ViewAll"); }       
        </div>
        <div class="tab-pane fade show active" id="secondTab" role="tabpanel" aria-labelledby="profile-tab">
            @{await Html.RenderPartialAsync("_AddOrEdit"); }
        </div>
    </div>
    
    @section Scripts{
        @{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
    }

    el error es que no carga las dos vistas parciales 


    • Editado SOLARONE(1) domingo, 24 de mayo de 2020 22:01
    domingo, 24 de mayo de 2020 22:00

Todas las respuestas

  • hola

    >>me parece que lo sacaron ese codigo

    quien los saco?

    No sera que se cambio por

        @{await Html.RenderPartialAsync("_ViewAll"); }      

    >>la otra pestaña donde estara la insercion o la actualizacion el detalle es que tengo problemas

    Si tienes un tab para alta y actualizacion no sera que esta se genera por javascript o jquery ? no veo que un partialview aplique en le edicion de entidades que puedes cambiar dinamicamente segun la seleccion

    >>el error es que no carga las dos vistas parciales

    Te esta indicando que la vista espera una lista de EmployeeModel cuando le estas pasando solo una unica instancia

    Vistas parciales en ASP.NET Core

    Recomendaria leas el titulo "Acceso a datos desde vistas parciales" alli explica como le debes pasar los datos que espera la view para poder generarla

    Si a ViewAll no le pasas datos y esta espera una lista de empleados no sabra cuales utilizar, por eso falla

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    domingo, 24 de mayo de 2020 22:23
  • Gracias por responder, tal vez no me explique bien tengo un controlador llamado Employee el cual tiene una accion Index por lo tanto existe una vista Index, en esta vista Index estoy creando una nav Tab con dos pestañas una de ellas "ViewAll" muestra un listado de Employee en la otra pestaña "AddOrEdit" servira para la insercion o actualizacion de los Employee con @HTML.Action("ViewAll") se podia llamar a la vista y su accion para el llenado de los Employee, en cambio con RenderPartial necesito indicar en Modelo lo que tendo en index es que tengo dos tipos de modelos una LISTA de Employee y un objeto employe el cual me da error adjunto el controlador.
    public ActionResult Index()
            {
                EmployeeModel emp = new EmployeeModel();
                return View(emp);
            }
    
            public ActionResult ViewAll()
            {
                return View(GetAllEmployee());            
            }
            IEnumerable<EmployeeModel> GetAllEmployee()
            {
                //using (JALLPITADbContext db = new JALLPITADbContext())
                //{
                //    return db.Employees.ToList<EmployeeModel>();
                
                //}
                return _context.Employees.ToList<EmployeeModel>();
            }
    
            // GET: Transaction/AddOrEdit
            // GET: Transaction/AddOrEdit/5
            [HttpGet]
            [NoDirectAccess]
            public async Task<IActionResult> AddOrEdit(int id = 0)
            {
                return View(await _context.Employees.ToListAsync());
            }
    
            // POST: Transaction/AddOrEdit
            // To protect from overposting attacks, enable the specific properties you want to bind to, for 
            // more details, see http://go.microsoft.com/fwlink/?LinkId=317598.
            [HttpPost]
            [ValidateAntiForgeryToken]
            public async Task<IActionResult> AddOrEdit(int id, [Bind("TransactionId,AccountNumber,BeneficiaryName,BankName,SWIFTCode,Amount,Date")] EmployeeModel employeModel)
            {
                if (id != employeModel.EmployeeID)
                {
                    return NotFound();
                }
    
                if (ModelState.IsValid)
                {
                    if (id == 0)
                    {                    
                        _context.Add(employeModel);
                        await _context.SaveChangesAsync();
                    }
                    else
                    {
                        try
                        {
                            _context.Update(employeModel);
                            await _context.SaveChangesAsync();
                        }
                        catch (DbUpdateConcurrencyException)
                        {
                            if (!EmployeModelExists(employeModel.EmployeeID))
                            {
                                return NotFound();
                            }
                            else
                            {
                                throw;
                            }
                        }
                    }
                    return Json(new { isValid = true, html = Helper.RenderRazorViewToString(this, "_ViewAll", _context.Transactions.ToList()) });
                }
                return Json(new { isValid = false, html = Helper.RenderRazorViewToString(this, "AddOrEdit", employeModel) });
            }
            private bool EmployeModelExists(int id)
            {
                return _context.Transactions.Any(e => e.TransactionId == id);
            }
        }

     
    domingo, 24 de mayo de 2020 22:50