Estoy haciendo una llamada ajax en cshtml como a continuación:
$(document).ready(function(){ $('.dl-dir-list').click(function(e){ console.log($(e.target).data('path')); console.log(JSON.stringify({path: $(e.target).data('path')})); $.ajax({ type: "POST", url: '@Url.Action("GetFiles")', data: JSON.stringify({path: $(e.target).data('path')}), dataType: "json", contentType: "application/json; charset=utf-8", success: function (response) { console.log(response); }, error: function () { alert("Error while getting files"); } }); }); });Método de acción:
[HttpPost] public JsonResult GetFiles([FromBody]string path) { return Json(_fileService.GetFilesFromDirectory(path)); }El problema siempre es que el parámetro de ruta es nulo. ¿Cual podría ser el problema? Esto está en Asp.Net COre, versión .Net 6
1.Asegúrese de que $(e.target).data('path') contenga valor.
2. Cambia tu código a:
data: JSON.stringify($(e.target).data('path')),Toda la demostración de trabajo:
Vista:
//be sure add this `data-path` attribute <input type="button" value="Create" class="dl-dir-list" data-path="aaa"/> @section Scripts { <script> $(document).ready(function(){ $('.dl-dir-list').click(function(e){ console.log($(e.target).data('path')) //result: "aaa" $.ajax({ type: "POST", url: '@Url.Action("GetFiles")', data: JSON.stringify($(e.target).data('path')), //change here.... dataType: "json", contentType: "application/json; charset=utf-8", success: function (response) { console.log(response); }, error: function () { alert("Error while getting files"); } }); }); }); </script> }Controlador:
[HttpPost] public JsonResult GetFiles([FromBody]string path) { return Json(_fileService.GetFilesFromDirectory(path)); }Pruébelo como a continuación,
data: JSON.stringify({"path": $(e.target).data('path')}),