2011-07-14 17 views
5

Jak wysłać wartość TextBox jako parametr ActionLink?Przekazywanie parametrów do MVC Ajax.ActionLink

muszę użyć Html.TextBoxFor

<%= Html.TextBoxFor(m => m.SomeField)%> 
<%= Ajax.ActionLink("Link Text", "MyAction", "MyController", new { foo = "I need here the content of the textBox, I mean the 'SomeField' value"}, new AjaxOptions{ UpdateTargetId = "updateTargetId"})%> 

The Contoller/Akcje wygląda następująco:

public class MyController{ 
    public ActionResult MyAction(string foo) 
    {  
     /* return your content */ 
    } 
} 

Korzystanie MVC 2.0

+0

Twoja odpowiedź: http://stackoverflow.com/questions/2595830/passing-multiple-parameters-in-an-mvc-ajax-actionlink – AmirHossein

Odpowiedz

7

Jak mogę wysłać wartości TextBox jako parametr ActionLinka?

semantycznie poprawny sposób wysyłania pola wprowadzania wartości (takie jak pola tekstowe) do serwera jest za pomocą html <form> i nie łączy:

<% using (Ajax.BeginForm("MyAction", "MyController", new AjaxOptions { UpdateTargetId = "updateTargetId" })) { %> 
    <%= Html.TextBoxFor(m => m.SomeField) %> 
    <input type="submit" value="Link Text" /> 
<% } %> 

Teraz w akcji kontrolera można automatycznie uzyskać wartość wejścia SomeField wprowadzone przez użytkownika:

public class MyController: Controller 
{ 
    public ActionResult MyAction(string someField) 
    {  
     /* return your content */ 
    } 
} 

można oczywiście próbować naruszać semantyki znaczników HTML i sposób ma pracować przez w opierając się na użyciu ActionLink, nawet jeśli jest on nieprawidłowy. W tym przypadku, oto co można zrobić:

<%= Html.TextBoxFor(m => m.SomeField) %> 
<%= Html.ActionLink("Link Text", "MyAction", "MyController", null, new { id = "myLink" }) %> 

a następnie w oddzielnym pliku JavaScript dyskretnie AJAXify ten link jQuery:

$(function() { 
    $('#myLink').click(function() { 
     var value = $('#SomeField').val(); 
     $('#updateTargetId').load(this.href, { someField: value }); 
     return false; 
    }); 
}); 
+0

Witam, dlaczego używasz $ (function() {? Dlaczego nie $ ("# myLink") .Kliknij direclty? Czy $ (dokument) .on ("kliknięcie", "#myLink", function() to samo? Dzięki – Patrick

Powiązane problemy