Estoy tratando de pasar datos de una vista a un controlador usando parámetros. Ahora estoy corriendo algunas dificultades. Estoy tratando de pasar esos parámetros una vez que selecciono una fila de una tabla y presiono un botón que tiene un método onclick para ShowTasks()
El controlador C#:
[Route("/service/delivery/{id}/{shopdoccode}/{regdate}")] public ActionResult Delivery(string id, string shopdoccode, string regdate) { //do stuf }La función Javascript cuando el usuario hace clic en el botón:
function ShowTasks() { //Dear Stackoverflow > This works, this is for selecting a row in the table var $selectedRow = $(".highlight"); if ($selectedRow.length == 1) { var dcColumn = 0; var rdColumn = 1; var shopdoccodeColumn = 3; //assigning name to the colomn value var id = $selectedRow[0].children[dcColumn].innerText.trim(); var regdate = $selectedRow[0].children[rdColumn].innerText.trim(); var shopdoccode = $selectedRow[0].children[shopdoccodeColumn].innerText.trim(); //ajax if (id && regdate && shopdoccode) { $.ajax({ type: 'POST', url: '@Url.Action("service", "delivery" ,new { id = "id", shopdoccode = "shopdoccode", regdate = "regdate" })', data: { id, regdate, shopdoccode }, success: function (data) { if (data.success) { console.log("Succes"); } }, error: function (data) { console.log("Error"); } }); } } }¿Qué he hecho hasta ahora? Sentado durante horas tratando de encontrar una manera de dar los parámetros a mi controlador para poder invocar un procedimiento almacenado de SQL. Desafortunadamente, no puedo simplemente usar un formulario oculto para esto.
También esto fue bastante útil: ¿Parámetros de Url.Action?
Me parece que su Url.Action tiene sus parámetros en el orden incorrecto. cambiarlo a:
url: '@Url.Action("delivery", "service", new { id = "id", shopdoccode = "shopdoccode", regdate = "regdate" })',Aquí está la sobrecarga adecuada que desea:
Action(String, String, Object) con actionName, controllerName y routeValues, en ese orden.
prueba con Url.RouteUrl en lugar de Url.Action
No puede escribir un archivo *.js o *.html con un código de afeitar.
@Url.Action(string actionName,string controllerName,object routeValues)El código anterior solo se puede usar en el archivo *.cshtml.