[HttpPost] 属性意味着只能通过 POST 请求访问该方法。如果您在 Firebug 或类似的东西中查看请求,您会看到正在发出的请求,并得到一个 500 错误作为响应。
如果您希望链接执行 POST,请将其更改为:
@Ajax.ActionLink("Asenkron process", "RemoveValue", new AjaxOptions {HttpMethod="POST"})
编辑
在进一步阅读文档后,Ajax.ActionLink 不会对它得到的结果做任何事情,除非你指定它要做什么。它似乎默认情况下也会执行 POST,因此不需要 AjaxOptions。如果要显示 RemoveValue 视图中的任何内容,则需要执行以下操作:
@Ajax.ActionLink("Text","RemoveValue", new AjaxOptions {UpdateTargetId="resultDiv" })
<div id="resultDiv">
</div>
resultDiv 的内容将是 Action 返回的任何内容。
如果您只是在寻找某种确认:
<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"); 结尾。然后浏览器将向AnotherAction 发出GET 请求。这可以防止当用户单击后退按钮和浏览器中的“数据必须重新提交到页面”弹出窗口时重复操作。
希望这会更有帮助。