【发布时间】:2011-05-07 15:59:39
【问题描述】:
想象一下,我有一个 HTML 表格,其中包含几行项目。对于每个项目,我都会生成一个“删除”按钮,如下所示:
<% using (Ajax.BeginForm("Delete", "MyController", new { item.Id }, new AjaxOptions { HttpMethod="POST" })) { %>
<input type="submit" class="deletebutton" value="Delete" />
<% } %>
对应的动作如下:
[HttpPost]
public JavaScriptResult Delete(int id)
{
var item = _repository.GetById(id);
// [...] actually delete the item
var script = string.Format("OnItemDeleted({0},{1})", item.Id, new JavaScriptSerializer().Serialize(item.Name));
return JavaScript(script);
}
最后,这是执行Delete后应该调用的Javascript函数:
function OnItemDeleted(id, name) {
$('#errorlabel').text(name + " deleted successfully.");
$('#tr_item_' + id).fadeOut();
};
我从 Steven Sanderson 的“Pro ASP.NET MVC 2 Framework”一书中得到了这个,并在我的项目中看到它曾经工作过。与此同时,我的很多代码都已更改,包括对 MVC 3 的更新,由于某种原因它不再工作了。单击删除按钮后,操作方法被正确调用,但在此之后浏览器向我显示浏览器中的 JavaScript 结果,例如:
OnItemDeleted(21,"Fancy Item 1234")
奇怪的是,我也被重定向到 Admin/MyController/Delete/{ItemId} 尽管我的 Delete 操作明确说明为 [HttpPost] 并且没有同名的 GET 操作。
您知道可能导致这种行为的原因吗?提前致谢!
【问题讨论】:
标签: jquery ajax asp.net-mvc-3 http-post