Передача параметров в MVC Ajax.ActionLink - PullRequest
5 голосов
/ 15 июля 2011

Как я могу отправить значение TextBox в качестве параметра ActionLink?

Мне нужно использовать 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"} )%>

Контроллер / Действия выглядит так:

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

Использование MVC 2.0

1 Ответ

7 голосов
/ 15 июля 2011

Как я могу отправить значение TextBox в качестве параметра ActionLink?

Семантически правильный способ отправки значений полей ввода (например, текстовых полей) на сервер - использовать HTML <form>, а не ссылки:

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

Теперь в действии вашего контроллера вы автоматически получите значение ввода SomeField, введенного пользователем:

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

Конечно, вы можете попытаться нарушить семантику разметки и способ работы HTML, настаивая на использовании ActionLink, даже если это неправильно. В этом случае вот что вы могли бы сделать:

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

, а затем ненавязчиво в отдельном файле javascript. AJAX Укажите эту ссылку, используя jQuery:

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