在视图中,我有以下内容:
@using (Html.BeginForm())
{
<input type="submit" id="savebtn" value="Save" onclick="saveLayout()"/>
}
<script type="text/javascript">
function saveLayout() {
$.ajax({
url: '/Page/SaveFaces/',
data: {
/* layout data of the page, irrelevant */
},
type: 'post',
success: function () {
}
});
return false;
}
</script>
上面点击了以下操作,它只是将用户重定向回他们来自的 URL(它也应该保存数据,但为了简单起见,我删除了该部分,因为它不会影响问题):
[HttpPost]
public ActionResult SaveFaces(string items)
{
return Redirect(Request.UrlReferrer.AbsoluteUri);
}
然后,由于重定向,我们回到这个非常标准的模型获取操作:
public ActionResult Index(int id = 0)
{
var page = db.Pages.Find(id);
if (page == null) return HttpNotFound();
return View(page);
}
问题是最后一个动作被调用了两次。
我尝试删除 AJAX 调用并执行正常的 POST 操作,问题就消失了。但是,我尝试发送的数据只能通过 jQuery 脚本获得,我无法将它们放入表单中。我被限制使用 AJAX 方法。
我能做些什么来防止动作被两次击中吗?