Я сам столкнулся с той же проблемой и решил ее с помощью атрибута data-
и некоторого jQuery.Преимущество такого способа состоит в том, что вы все равно получаете правильный URL при наведении курсора на ссылку, даже если она выполняет POST.Обратите внимание, что Html.BeginForm
содержит действие по умолчанию в случае, если пользователь нажимает клавишу ввода.
HTML (ASP.NET MVC3 Razor)
@using (Html.BeginForm("Quick", "Search"))
{
<input type="text" name="SearchText" />
<a href="@Url.Action("Quick", "Search")" data-form-method="post">Search</a>
<a href="@Url.Action("Advanced", "Search")" data-form-method="post">Advanced</a>
}
jQuery
$("a[data-form-method='post']").click(function (event) {
event.preventDefault();
var element = $(this);
var action = element.attr("href");
element.closest("form").each(function () {
var form = $(this);
form.attr("action", action);
form.submit();
});
});