Как я могу отправить значение 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;
});
});