¿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.
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:asp-controller
,asp-action
yasp-route-id
generen la URL deseada para la presentación del formulario.Route
en conflicto que puedan estar anulando la URL esperada.POST
, ya que así se configuran los atributosHttpPost
eIFormFile
.[Controller]
y[HttpGet]
.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.