es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Por qué mis ayudantes de etiquetas .NETCore no funcionan para mi botón HTML?

Tengo un botón que activa una acción en mi controlador a través del botón. El botón tiene ayudantes de etiquetas para el controlador, la identificación de la ruta y la acción (ver a continuación):

(Se han insertado saltos de línea para mayor legibilidad)

<div class="input-group-append">
    <button class="btn btn-outline-secondary" type="button" asp-controller="Home" asp-route-id="@Model.Project.Id" asp-action="UploadDocument" id="uploadDocument">
        Subir
    </button>
</div>

Aquí está IActionResult en el controlador:

// POST - Cargar documento
[HttpPost("~/Home/UploadDocument")]
public IActionResult UploadDocument(int id, IFormFile files)
{
    // Obtener y subir archivo
    if (files != null)
    {
        if (files.Length > 0)
        {
            // Obtener FileName
            var fileName = Path.GetFileName(files.FileName);
            // Obtener la extensión del archivo
            var fileExtension = Path.GetExtension(fileName);
            // Concatenando FileName + FileExtension
            // var newFileName = String.Concat(Convert.ToString(Guid.NewGuid()), fileExtension);

            var objfiles = new Document()
            {
                Id = 0,
                Name = fileName,
                FileType = fileExtension,
                ProjectId = id
            };

            using (var target = new MemoryStream())
            {
                files.CopyTo(target);
                objfiles.DataFiles = target.ToArray();
            }

            _db.Files.Add(objfiles);

        }
    }

    _db.SaveChanges();
    return View(Update(id));
}

Puse un punto de interrupción en la primera línea de código en UploadDocment y hice clic en el botón. No pasó nada. El punto de interrupción nunca llegó. No estoy seguro de por qué esto no funciona. Tengo:

@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

… en mi archivo _ViewImports.cshtml y los ayudantes de etiquetas funcionan en otros botones.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Hay algunas cosas que podrían estar causando el problema de que el punto de interrupción en la acción UploadDocument no se active cuando se hace clic en el botón:

    1. Verifique que el botón realmente se esté haciendo clic en él:
      • Asegúrese de que el botón no esté deshabilitado o oculto con CSS.
    2. Verifique el HTML generado inspeccionando la página con las herramientas de desarrollo del navegador:
      • Asegúrese de que los atributos asp-controller, asp-action y asp-route-id generen la URL deseada para la presentación del formulario.
      • Verifique que no haya atributos globales de Route en conflicto que puedan estar anulando la URL esperada.
      • Confirme que el formulario generado está utilizando el método POST, ya que así se configuran los atributos HttpPost e IFormFile.
    3. Verifique la estructura de su controlador y namespace:
      • Asegúrese de que los nombres de controlador y acción definidos en el HTML coincidan con los nombres reales de controlador y acción.
      • Verifique que los métodos de controlador y acción estén correctamente anotados con los atributos [Controller] y [HttpGet].
    4. Verifique la consola del servidor en busca de errores o advertencias:
      • Asegúrese de que no haya errores o advertencias de compilación, y que la aplicación se esté ejecutando correctamente.
      • Verifique de nuevo que el método de acción sea llamado desde el código fuente (por ejemplo, si se eliminó el método de acción, el punto de interrupción no se activará).

    Una vez que haya eliminado estas posibilidades, es probable que tenga una mejor comprensión de lo que está causando que el punto de interrupción no se active en su método de acción.

Comments are closed.