2009-05-15 12 views
6

In meiner ASP.NET MVC-Anwendung möchte ich einen Benutzer einen Wert in ein Textfeld hinzufügen und dann meine Ajax.ActionLink drücken. Ich möchte so etwas wie dies zu tun:Wie kann ich einen Textboxes-Wert an meinen Ajax.ActionLink übergeben?

Ajax.ActionLink ("Go", "Action", "Controller", neu {value = Textbox1.value})

Oder wie sonst kann ich diese Textbox Wert erhalten Zurück zu meiner Aktion? Jquery?

Antwort

2

Sie führen kann Aktion mit AJAX $.get Methode abrufen:

<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

Das bringt mich fast dahin ... aber das erzeugt keinen AJAX-Anruf, sondern nur einen Standard-POST. – Whozumommy

+0

Ich habe den Code geändert, um einen AJAX-Anruf zu tätigen. Im Bedarfsfall sehen Sie sich auch die jQuery-Dokumentation an, um zu erfahren, wie Sie das zurückgegebene ActionResult verarbeiten können. –

+0

Antwort auf diese Frage (http://stackoverflow.com/questions/458055/jquery-mvc-user-controls) könnte auch nützlich sein. –

1

dies ist, wie Sie den Wert Ihrer Textbox in JQuery

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

Vielen Dank, aber ich versuche, dass die Daten zurück zu meinem Server-Code zu bekommen ... mir das heißt, ich brauche die Daten zurück an den Server übergeben über JSON oder eine andere Methode. Ich hope asp.net hat einige knifflige Methode, um die Daten zu greifen, ohne auf Javascipt angewiesen zu sein. – Whozumommy

+0

Da das Textfeld und was darin enthalten ist, müssen Sie sich auf clientseitige Skripts verlassen, um dies zu ermöglichen. Die Ausnahme ist, wenn Sie anstelle des Ajax-Aufrufs das Formular senden, dann MVC es auf der Serverseite für Sie verarbeiten. –

2

Vielen Dank Alexander! Danke, dass Sie mich auf den richtigen Weg gebracht haben. Ich habe den neuesten Code nicht getestet, aber ich konnte den vorherigen Code verwenden. Hier ist der Arbeitscode. Ich bin sicher, das alles kludgy ist, aber vielleicht jemand kann es aus mir zeigt eine elegantere Lösung:

  <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> 

Meine Lösung, wie Sie die LINK ist nur schwer Code sehen können, anstatt zu versuchen, die ASP zu verwenden. NET AJAX-Hilfsklasse.

0

ersetzen $ .get (Aktion, Daten); mit $ ("# yourTargetId"). Load (action, data); Sie eine Ajax wie in der folgenden erhalten:

<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" /> 
Verwandte Themen