我正在使用Ajax.BeginForm创建一个表单,该表单将对某个控制器操作执行Ajax回发,然后如果该操作成功,用户将被重定向到另一个页面(如果该操作失败,则使用AjaxOptions UpdateTargetId显示一条状态消息)
使用(Ajax.BeginForm(“删除”),null,
新的{userId=Model.userId},
新的AjaxOptions{UpdateTargetId=“UserForm”,LoadingElementId=“DeletingDiv”},
新的{name=“DeleteForm”,id=“DeleteForm”})
{
[HTML删除按钮]
}
如果删除成功,我将返回重定向结果:
[授权]
公共操作结果删除(Int32用户ID)
{
UserRepository.DeleteUser(UserId);
返回重定向(Url.Action(“索引”、“主页”);
}
但是主控制器索引视图被加载到UpdateTargetId中,因此我最终得到了一个页面中的一个页面。我在想两件事:
- 要么是我在设计这个
错误,应该处理这种类型的
不同的操作(不使用ajax) - 而不是返回重定向
结果,返回一个具有
其中的javascript执行
在客户端重定向
有人对#1有意见吗?或者,如果#2是一个好的解决方案,“重定向javascript视图”会是什么样子
您可以使用JavascriptResult来实现这一点
要重定向:
返回JavaScript(“window.location=”http://www.google.co.uk'");
要重新加载当前页面,请执行以下操作:
返回JavaScript(“location.reload(true)”;
这似乎是最简单的选择