Advertisement
Ousterfort

Producto vista index

Feb 6th, 2025
28
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.50 KB | Source Code | 0 0
  1. @model IEnumerable<ejemplo_crud_MVC_sqlServer.Models.Producto>
  2.  
  3. @{
  4.     ViewData["Title"] = "Productos";
  5. }
  6.  
  7. <!-- Mensajes de éxito y error -->
  8. @if (TempData["SuccessMessage"] != null)
  9. {
  10.     <div class="alert alert-success">
  11.         @TempData["SuccessMessage"]
  12.     </div>
  13. }
  14.  
  15. @if (TempData["ErrorMessage"] != null)
  16. {
  17.     <div class="alert alert-danger">
  18.         @TempData["ErrorMessage"]
  19.     </div>
  20. }
  21.  
  22. <div class="d-flex justify-content-between align-items-center">
  23.     <h2>Productos</h2>
  24.     <!-- Botón para agregar un nuevo producto -->
  25.     <a asp-action="CrearOEditar" class="btn btn-success">Agregar Producto</a>
  26. </div>
  27.  
  28. <!-- Tabla de productos -->
  29. <table class="table table-striped">
  30.     <thead class="table-dark">
  31.         <tr>
  32.             <th>Nombre</th>
  33.             <th>Categoría</th>
  34.             <th>Descripción</th>
  35.             <th>Acciones</th>
  36.         </tr>
  37.     </thead>
  38.     <tbody>
  39.         @if (Model != null && Model.Any())
  40.         {
  41.             @foreach (var producto in Model)
  42.             {
  43.                 <tr>
  44.                     <td>@producto.nombreProducto</td>
  45.                     <td>@producto.Categoria?.nombreCategoria</td>
  46.                     <td>@producto.descripcion</td>
  47.                     <td>
  48.                         <!-- Botón para editar -->
  49.                         <a asp-action="CrearOEditar" asp-route-id="@producto.idProducto" class="btn btn-primary btn-sm">
  50.                             Actualizar
  51.                         </a>
  52.                         <!-- Botón para eliminar -->
  53.                         <button class="btn btn-danger btn-sm" onclick="eliminarProducto(@producto.idProducto)">
  54.                             Eliminar
  55.                         </button>
  56.                     </td>
  57.                 </tr>
  58.             }
  59.         }
  60.         else
  61.         {
  62.             <tr>
  63.                 <td colspan="4" class="text-center">No hay productos disponibles.</td>
  64.             </tr>
  65.         }
  66.     </tbody>
  67. </table>
  68.  
  69. <!-- Paginación -->
  70. <div class="d-flex justify-content-center mt-4">
  71.     @if (ViewBag.TotalPaginas > 1)
  72.     {
  73.         <ul class="pagination">
  74.             <!-- Primera página -->
  75.             <li class="page-item @(ViewBag.PaginaActual == 1 ? "disabled" : "")">
  76.                 <a class="page-link" href="@Url.Action("Index", new { pagina = 1, tamañoPagina = 10 })">Primera</a>
  77.             </li>
  78.  
  79.             <!-- Páginas anteriores y siguientes -->
  80.             @for (int i = 1; i <= ViewBag.TotalPaginas; i++)
  81.             {
  82.                 <li class="page-item @(ViewBag.PaginaActual == i ? "active" : "")">
  83.                     <a class="page-link" href="@Url.Action("Index", new { pagina = i, tamañoPagina = 10 })">@i</a>
  84.                 </li>
  85.             }
  86.  
  87.             <!-- Última página -->
  88.             <li class="page-item @(ViewBag.PaginaActual == ViewBag.TotalPaginas ? "disabled" : "")">
  89.                 <a class="page-link" href="@Url.Action("Index", new { pagina = ViewBag.TotalPaginas, tamañoPagina = 10 })">Última</a>
  90.             </li>
  91.         </ul>
  92.     }
  93. </div>
  94.  
  95. <!-- Modal para confirmar la eliminación del producto -->
  96. <div class="modal fade" id="confirmDeleteModal" tabindex="-1" aria-labelledby="confirmDeleteModalLabel" aria-hidden="true">
  97.     <div class="modal-dialog">
  98.         <div class="modal-content">
  99.             <div class="modal-header">
  100.                 <h5 class="modal-title" id="confirmDeleteModalLabel">Confirmar Eliminación</h5>
  101.                 <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
  102.             </div>
  103.             <div class="modal-body">
  104.                 ¿Estás seguro de que deseas eliminar este producto?
  105.             </div>
  106.             <div class="modal-footer">
  107.                 <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancelar</button>
  108.                 <button type="button" class="btn btn-danger" id="confirmDeleteButton">Eliminar</button>
  109.             </div>
  110.         </div>
  111.     </div>
  112. </div>
  113.  
  114. <!-- Script para confirmar la eliminación con modal -->
  115. <script>
  116.     let productDeleteModal;
  117.  
  118.     document.addEventListener('DOMContentLoaded', function () {
  119.         productDeleteModal = new bootstrap.Modal(document.getElementById('confirmDeleteModal'));
  120.     });
  121.  
  122.     function eliminarProducto(id) {
  123.         document.getElementById('confirmDeleteButton').onclick = function () {
  124.             window.location.href = '/Productos/Eliminar/' + id;
  125.         };
  126.         productDeleteModal.show();
  127.     }
  128. </script>
  129.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement