Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

325
Vistas
Pasar una matriz de cadenas de JS al controlador C#

Tengo una matriz en JS ( var selectedEmails = []; ) Después de recopilar los correos electrónicos seleccionados de una cuadrícula, llamo a un controlador GET to C#:

 $.ajax({ type: 'GET', url: '@Url.Action("SendEmailBatchs", "account")', data: { emails: selectedEmails }, contentType: 'application/json', success: (data) => { console.log("data", data); } })

Cuando se llama, el parámetro en C# no obtiene datos. Revisé JS y los correos electrónicos están en la matriz. Usando puntos de interrupción, confirmé que se está llamando al método del controlador:

Controlador:

 [HttpGet("sendemailbatchs")] public async Task<ActionResult> SendEmailBatchs(string[] emails) { ... foreach (ApplicationUser user in users) { await SendEmailConfirmation(user); } return Ok; }

Cambiando los datos a data: { emails: JSON.stringify(selectedEmails) }, pasará una matriz con 1 elemento solamente, que contiene una lista de cadenas de correos electrónicos "[\"loes.vea@phanc.com\",\"MaAlonso.Mfizer.com\",\"cech@mll-int.cm\",\"jier.aris@si.com\"]"

¿Cuál sería el parámetro correcto de JS para obtener una cadena ARRAY donde cada correo electrónico es un elemento de la matriz?

 emails = [0]: "loes.vea@phanc.com\", [1]: \"MaAlonso.Mfizer.com\", ...
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Hay una brecha entre lo que espera en el controlador y lo que está enviando a través de la llamada ajax.

 public async Task<ActionResult> SendEmailBatchs(string[] emails)

Entendamos el parámetro de la función anterior, espera una serie de cadenas y se referirá a ella como correos electrónicos en el cuerpo de la función. Por lo tanto, deberá pasar una serie de cadenas en el cuerpo de la solicitud.

PFB mi controlador simple y llamada ajax correspondiente:

 [HttpGet("api/test")] public ActionResult<int> RecieveData(string[] emails) { return emails.Count(); }

Llame desde la interfaz de usuario de esta manera:

 var settings = { "url": "https://localhost:5000/api/test", "method": "GET", "headers": { "Content-Type": "application/json" }, "data": JSON.stringify([ "john@example.com", "jane@example.com" ]), }; $.ajax(settings).done(function (response) { console.log(response); });
about 4 years ago · Juan Pablo Isaza Denunciar

0

entonces, después de seguir las sugerencias de Devesh , terminé con

 var settings = { "url": '@Url.Action("SendEmailBatchs", "account")', "method": "GET", "headers": { "Content-Type": "application/json" }, "data": { emails: JSON.stringify(selectedEmails)}, };

el problema persistió, porque necesitaba DESERIALIZAR el resultado, en C#:

 public async Task<ActionResult> SendEmailBatchs(string emails) { var selectedEmails = JsonConvert.DeserializeObject<string[]>(emails); //DO STUFF }

Gracias

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda