Me estoy volviendo loco tratando de resolver esto. Primero, estoy usando un marco de entidad y modelos, etc. Entonces, en mi opinión, estoy recorriendo todos mis objetos, cada objeto tiene propiedades únicas: una de estas propiedades que quiero enviar a mi controlador, que hace algunas cosas, y luego vuelve a cargar la página.
Mi clase de controlador es la siguiente:
public IActionResult Index() { return View(_context.Modules.ToList()); } [HttpPost] public IActionResult LoadModule(string packageName) { //... do some things here return RedirectToAction("Index"); }Mi opinión es la siguiente:
<div class="container"> <div class="row"> @foreach (var m in Model) { <div class='col-sm-4'> <div class="card border-secondary mb-3"> <div class="card-body"> <div class="row"> <button class="btn btn-outline-primary" id="SendValue" type="submit" value="@m.IntegrationPoint"> Execute Package </button> </div> </div> </div> <br /> </div> } </div> </div>Y mi Jquery/Ajax:
<script> $(document).ready(function() { $("#SendValue").click(function(){ var val = $(this).val(); $.ajax({ type:"POST", url: '/ExampleModuleController/LoadModule', dataType: 'json', data:{String:val} }) .fail(function(){alert("fail")}) .done(function(){alert("success")}) }); }); </script>Un enlace a fiddle para una vista más fácil de html.
¿Qué estoy haciendo mal aquí? Ni siquiera parece registrar el clic de mi botón ni nada.
Agregue el siguiente código a su vista
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> Cambie la url: '/ExampleModuleController/LoadModule', a url: '@Url.Action("LoadModule", "ExampleModule")?IntegrationPoint=' + val ,
Además, en el controlador, cambie el nombre del parámetro a la string IntegrationPoint en la acción LoadModule.
Nota : Debido a que .fail(function(){alert("fail")}) en el frente, alertará el mensaje de error.
resultado: