Атрибут [HttpPost]
означает, что этот метод доступен только через запрос POST. Если вы посмотрите на запрос в Firebug или что-то подобное, вы увидите, что запрос выполняется, и в ответ получите ошибку 500
.
Если вы хотите, чтобы ссылка выполняла POST, измените ее на:
@Ajax.ActionLink("Asenkron process", "RemoveValue", new AjaxOptions {HttpMethod="POST"})
EDIT
При дальнейшем чтении документов Ajax.ActionLink ничего не делает с полученным результатом, если вы не укажете что-либо для него. По умолчанию он также выполняет POST, поэтому AjaxOptions не нужен. Если вы хотите отобразить содержимое того, что находится в представлении RemoveValue, вам нужно сделать что-то вроде следующего:
@Ajax.ActionLink("Text","RemoveValue", new AjaxOptions {UpdateTargetId="resultDiv" })
<div id="resultDiv">
</div>
Содержимое resultDiv будет тем, что возвращается из действия.
Если вам нужно какое-то подтверждение:
<script>
function onSuccess()
{
alert("Success!");
}
function onFailure()
{
alert("Failed!");
}
</script>
@Ajax.ActionLink("Text","RemoveValue", new AjaxOptions {OnSuccess="onSuccess", OnFailure="onFailure" })
Это, конечно, при условии, что вы хотите асинхронный запрос. Если вам нужен обычный синхронный POST, когда браузер переходит на новую страницу, выполните что-то вроде этого:
using(Html.BeginForm("ActionName","ControllerName",FormMethod.Post))
{
<input type="submit" value="Delete" />
}
Если вы сделаете это, действие, которое вы отправите, должно завершиться return RedirectToAction("AnotherAction");
. Затем браузер отправит запрос GET на AnotherAction. Это предотвращает дублирование действий, когда пользователь нажимает кнопку «Назад» и в браузерах появляется всплывающее окно «Данные должны быть повторно отправлены на страницу».
Надеюсь, это немного более полезно.