none
Enviar datos desde Javascript al controlador RRS feed

  • Pregunta

  • Buen día!!

    Mi cuestión es sobre la forma de poder enviar a un controlador, parámetros mediante javascript.

    Tengo en una vista (index), el siguiente código javascript para acceder a un controlador (Inicio) y enviarle el valor del id que recuperé en el código javascript.

    var url = "@Url.Action("Inicio", "Home", new { id="parametro-id"})"; url = url.replace("parametro-id", id);

    location.href = url;

    El código, efectivamente, me redirecciona al controlador que le he indicado y recibo el valor del parámetro correctamente, sin embargo, me presenta un error en runtime, que detecté se relaciona con la línea en donde formo la url: 

    "SCRIPT5017: Syntax error in regular expression"

    incluso la variable de javascript "url"  toma el valor: "Home/Inicio/1" (dónde 1 es el valor del parámetro que le estoy pasando)

    Mi pregunta es: ¿Es correcta la forma en la que estoy redireccionando al controlador, y es correcta la forma en que estoy formando la ruta?

    Gracias !!


    AUR

    miércoles, 10 de septiembre de 2014 21:00

Respuestas

  • hola

    podria realizar un redirect a un action con el location.href pero no no me queda claro porque usas el replace e la url

    y ese valor id que asigna de donde lo obtienes? porque si estas con codigo cliente deberisa obtener ese id de la misma forma

    no asignes ninguna new { id="parametro-id"} al Url.Action

    solo concatena el valor para que queda

    var id = document.getElementByTagId('hidden1').val();

    var url = '@Url.Action("Inicio", "Home")' + '/' + id;

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta Ale Uribe martes, 23 de septiembre de 2014 17:19
    jueves, 11 de septiembre de 2014 0:16

Todas las respuestas

  • hola

    para invocar un action desde javascript deberias usar jquery con el $.ajax, $.post o $.get

     jQuery Ajax GET and POST calls to Controller's Method in MVC

    pero lo datos no los pases como parte de la url, definelos como json

    Posting Data With jQuery AJAX In ASP.NET Razor Web Pages

    recuerda que puedes usar

    var datos = {

        id:"parametro-id"

    };

    ese valor lo pones como parte del data que se envia en el $.ajax, $.post etc

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 10 de septiembre de 2014 23:03
  • Podría hacerse sin utilizar ajax?

    AUR

    miércoles, 10 de septiembre de 2014 23:14
  • hola

    podria realizar un redirect a un action con el location.href pero no no me queda claro porque usas el replace e la url

    y ese valor id que asigna de donde lo obtienes? porque si estas con codigo cliente deberisa obtener ese id de la misma forma

    no asignes ninguna new { id="parametro-id"} al Url.Action

    solo concatena el valor para que queda

    var id = document.getElementByTagId('hidden1').val();

    var url = '@Url.Action("Inicio", "Home")' + '/' + id;

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta Ale Uribe martes, 23 de septiembre de 2014 17:19
    jueves, 11 de septiembre de 2014 0:16
  • Gracias por responder. 

    Lo que necesito hacer, es redireccionar a una URL y enviarle el valor obtenido, ya que es la llave para otras funciones. Ese valor, lo he obtenido mediante $.ajax que conmentas anteriormente. Lo ideal es que no exista ningún control que salve el valor de id, inclusive la alternativa de no enviarlo mediante la URL, es por eso que había tratado con el new{}. El replace lo utilizo para asignar el valor que tiene id (que es una variable de javascript) en el código de servidor, de otra forma no es reconocido.


    AUR

    jueves, 11 de septiembre de 2014 13:58
  • hola

    es que si lo pones en el new{} haras que ese id forma parte de la url

    si la idea es redireccionar el $.ajax o la funcionalidad de jquery no aplica, porque justamente permite obtener datos pero no redireccionar

    lo que no respondes es como obtienes ese id, porque deberias obtenerlo con codigo javascript, por eso use el getElementByTagId

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 11 de septiembre de 2014 14:03
  • Tienes razón, creo que me faltó claridad en mi respuesta. El valor de id, lo obtuve previamente, precisamente mediante la funcionalidad $.ajax, es un valor alojado en BD. Posterior a esto, es donde necesito hacer la redirección.

    Gracias nuevamente por la ayuda!


    AUR

    jueves, 11 de septiembre de 2014 16:30