Pasar una matriz de valores a Action usando Ajax.ActionLink

Me gustaría proporcionar a mi Acción una matriz de valores enteros (según los valores de casilla de verificación seleccionados en un formulario). Estoy tratando de usar Ajax.ActionLink de la siguiente manera...

    <%= Ajax.ActionLink("Submit", "PrintPinLetters", "EPOC", new { selectedItemsToPrint }, new AjaxOptions { HttpMethod="POST", UpdateTargetId = "PrintConfirmation", LoadingElementId = "resultLoadingDiv", OnFailure="handleError"}, new { id = "btnPrintPinLetter" }) %>                            

pero no estoy seguro de qué pasar a la sección routeValue. Mi acción en el controlador se define como...

    [HttpPost]
    public ActionResult PrintPinLetters(Int64[] selectedItemsToPrint)
    {                           

Básicamente, estoy buscando pasar una matriz (o una lista separada por comas de valores de ID) en 'selectedItemsToPrint'. Esta lista se crearía utilizando los valores definidos por las casillas de verificación (todas con el mismo nombre) en varias filas de una tabla.

He usado Ajax.BeginForm pero como esto da como resultado una forma anidada, estaba teniendo resultados impredecibles cuando usaba navegadores más antiguos (IE 7 y 8).

preguntado el 03 de mayo de 12 a las 11:05

Utiliza long en lugar de Int64 -

1 Respuestas

normalmente haría el ajax yo mismo con una llamada jQuery. Lo configurarías así

  1. en lugar de usar Ajax.ActionLink(), use Html.ActionLink(.... {id = "myid"}). No olvides darle a tu enlace una identificación
  2. crear una función lista para usar

    $(document).ready(function () {
        $('#myid').click(function() {
            var allElements = $('#container').find('input').serialize();  
            $.post(action, allElements, function (data) {
                // add your code here to process the data returned from the post.
            });
    
            return false;  // dont post the form
        });
    });
    
  3. no olvide establecer el atributo de nombre de todos los elementos de entrada en selectedItemsToPrint para que el enlace funcione correctamente con su resultado de acción

El Html debería verse así

<div id="container">
    <input type="checkbox" name="selectedItemsToPrint" value="somevalue0" />
    <input type="checkbox" name="selectedItemsToPrint" value="somevalue1" />
    <input type="checkbox" name="selectedItemsToPrint" value="somevalue2" />
    <input type="checkbox" name="selectedItemsToPrint" value="somevalue3" />
    <input type="checkbox" name="selectedItemsToPrint" value="somevalue4" />
    <input type="checkbox" name="selectedItemsToPrint" value="somevalue5" />
</div>

contestado el 03 de mayo de 12 a las 12:05

Gracias por esto Kevin, ¿cuál debería ser la firma de mi Acción? Además, ¿cuál debería ser la URL para llamar a la acción? Estoy probando '/EPOC/PrintPinLetters' pero no parece intervenir en mi acción. - colin hardie

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.