2011-07-14 49 views
5

Làm cách nào để gửi giá trị của TextBox dưới dạng tham số của ActionLink?Truyền tham số cho MVC Ajax.ActionLink

tôi cần phải sử dụng 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"})%> 

Các Contoller/Hành động trông như thế này:

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

Sử dụng MVC 2,0

+0

câu trả lời của bạn: http://stackoverflow.com/questions/2595830/pass-multiple-parameters-in-an-mvc-ajax-actionlink – AmirHossein

Trả lời

7

Làm thế nào tôi có thể gửi các giá trị của TextBox như một tham số của ActionLink?

Cách ngữ nghĩa chính xác của việc gửi đầu vào các lĩnh vực giá trị (chẳng hạn như hộp văn bản) đến một máy chủ là bằng cách sử dụng một html <form> và không liên kết:

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

Bây giờ trong hành động điều khiển của bạn, bạn sẽ tự động nhận được giá trị của SomeField đầu vào nhập vào bởi người sử dụng:

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

Bạn có thể dĩ nhiên cố gắng vi phạm các ngữ nghĩa đánh dấu và đường HTML là nghĩa vụ phải làm việc bởi trong sisting trên bằng cách sử dụng một ActionLink ngay cả khi nó là sai. Trong trường hợp này đây là những gì bạn có thể làm:

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

và sau đó trong một tập tin javascript riêng biệt kín đáo AJAXify liên kết này sử dụng jQuery:

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

Xin chào, tại sao bạn sử dụng $ (function() {? Tại sao không phải là $ ('# myLink'). click direclty? Là $ (tài liệu) .on ('click', '#myLink', hàm() cùng một điều? – Patrick

Các vấn đề liên quan