2009-05-15 19 views
6

En mi aplicación ASP.NET MVC, quiero que un usuario agregue un valor en un cuadro de texto y luego presione mi Ajax.ActionLink. Quiero hacer algo como esto:¿Cómo puedo pasar un valor de Textboxes a mi Ajax.ActionLink?

Ajax.ActionLink ("Go", "Acción", "controlador", el nuevo valor = {} Textbox1.value)

O de qué otra manera puedo obtener este valor de texto volver a mi acción? Jquery?

Respuesta

2

Puede ejecutar la acción usando AJAX $.get método:

<script type="text/javascript">  

    $(document).ready(function() 
    { 
     $("#t").change(function() 
     { 
      RunAction(); 
     }); 

     RunAction(); 
    }); 

    function RunAction() 
    { 
     var action = '<%= Url.Action("Action", "Controller") %>'; 
     var data = $("#t").serialize(); 
     $.get(action, data); 
    } 

</script> 

<input type="text" id="t" /> 
+0

Eso casi me lleva allí ... pero esto no crea una llamada AJAX, sino simplemente un POST estándar. – Whozumommy

+0

He cambiado el código para hacer una llamada AJAX. En caso de necesidad, consulte también la documentación de jQuery para saber cómo procesar ActionResult devuelto. –

+0

La respuesta a esta pregunta (http://stackoverflow.com/questions/458055/jquery-mvc-user-controls) también podría ser útil. –

1

esta es la forma de recuperar el valor de su cuadro de texto en jQuery

var input = $('input[name=txt_MyTextBox]').val() 
+0

Gracias, pero estoy tratando de conseguir que los datos de nuevo a mi código de servidor ... para mí que significa que tengo que pasar los datos de vuelta al servidor a través de JSON o algún otro método. ESTOY ESPERANDO asp.net tiene algún método complicado para tomar los datos sin tener que depender de javascipt. – Whozumommy

+0

Dado que el cuadro de texto y lo que contiene está en el lado del cliente, tendrá que confiar en las secuencias de comandos del lado del cliente para que esto suceda. La excepción es si en vez de hacer la llamada Ajax, envía el formulario, entonces MVC lo procesa en el lado del servidor por usted. –

2

Muchas gracias Alexander! Gracias por ponerme en el camino correcto. No probé tu último código, pero pude hacer que tu código anterior funcionara. Aquí está el código de trabajo. Estoy seguro de que todo esto es kludgy, pero tal vez alguien por ahí me puedo mostrar una solución más elegante:

  <script type="text/javascript"> 
       $(document).ready(function() { 
        $("#myVal").change(function() { 
         changeActionURL(); 
        }); 
        changeActionURL(); 
       }); 
      function changeActionURL() { 
       var url = '<%= new UrlHelper(ViewContext.RequestContext).Action("Action", "Controller") %>' + '?dup=' + $("#myVal").val(); 
       $("#u").attr('href', url); 
      } 
      </script> 

      <a id="u" href="" onclick="Sys.Mvc.AsyncHyperlink.handleClick(this, new Sys.UI.DomEvent(event), { insertionMode: Sys.Mvc.InsertionMode.replace, updateTargetId: 'HellaYeah' });">Report Dupe</a> 

     </p> 
     <div id="response">not done</div> 

Mi solución como se puede ver es sólo para codificar la Conexión en lugar de tratar de utilizar el ASP. Clase de ayuda NET AJAX.

0

reemplace $ .get (acción, datos); con $ ("# yourTargetId"). Load (acción, datos); se obtiene un Ajax como en el siguiente:

<script type="text/javascript">  

    $(document).ready(function() 
    { 
     $("#t").change(function() 
     { 
      RunAction(); 
     }); 

     RunAction(); 
    }); 

    function RunAction() 
    { 
     var action = '<%= Url.Action("Action", "Controller") %>'; 
     var data = $("#t").serialize(); 
     $("#yourTargetId").load(action, data); 
    } 

</script> 

<input type="text" id="t" /> 
Cuestiones relacionadas