2009-05-15 21 views
6

Nella mia applicazione ASP.NET MVC voglio che un utente aggiunga un valore in una casella di testo e poi mima il mio Ajax.ActionLink. Voglio fare qualcosa di simile:Come posso passare un valore Textboxes al mio Ajax.ActionLink?

Ajax.ActionLink ("Go", "Azione", "Controller", nuova {value = Textbox1.value})

O quale altro modo posso ottenere questo valore di testo torna alla mia azione? Jquery?

risposta

2

È possibile eseguire l'azione utilizzando AJAX $.get metodo:

<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

Questo quasi mi porta lì ... ma questo non crea una chiamata AJAX, ma piuttosto solo un POST standard. – Whozumommy

+0

Ho cambiato codice per effettuare chiamate AJAX. In caso di necessità, consultare anche la documentazione di jQuery per informazioni su come elaborare ActionResult restituito. –

+0

La risposta a questa domanda (http://stackoverflow.com/questions/458055/jquery-mvc-user-controls) potrebbe anche essere utile. –

1

questo è come si recupera il valore dal tuo casella di testo in JQuery

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

Grazie, ma sto cercando di ottenere che i dati di nuovo al mio codice server ... per me che significa che ho bisogno per passare i dati al server tramite JSON o qualche altro metodo. Sto sperando che asp.net abbia qualche metodo complicato per prendere i dati senza dover fare affidamento su javascipt. – Whozumommy

+0

Poiché la casella di testo e ciò che è in essa è sul lato client, è necessario fare affidamento sullo scripting lato client per fare in modo che ciò accada. L'eccezione è se invece di eseguire la chiamata Ajax, si invia il modulo, quindi MVC lo elabora sul lato server per te. –

2

Grazie mille Alexander! Grazie per avermi messo sulla strada giusta. Non ho provato l'ultimo codice, ma sono riuscito a far funzionare il codice precedente. Ecco il codice funzionante. Sono sicuro che questo è tutto kludgy, ma forse qualcuno là fuori mi può mostrare una soluzione più 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> 

La mia soluzione come si può vedere è solo quello di codificare il LINK invece di cercare di usare l'ASP. Classe helper NET AJAX.

0

sostituire $ .get (azione, dati); con $ ("# yourTargetId"). Load (action, data); si ottiene un ajax come nell'esempio seguente:

<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" /> 
Problemi correlati