我正在使用 Ajax.BeginForm 创建一个表单,该表单将对某个控制器操作执行 ajax 回发,然后如果操作成功,用户应该被重定向到另一个页面(如果操作失败,则使用显示状态消息AjaxOptions UpdateTargetId)。
using (Ajax.BeginForm("Delete", null,
new { userId = Model.UserId },
new AjaxOptions { UpdateTargetId = "UserForm", LoadingElementId = "DeletingDiv" },
new { name = "DeleteForm", id = "DeleteForm" }))
{
[HTML DELETE BUTTON]
}
如果删除成功,我将返回重定向结果:
[Authorize]
public ActionResult Delete(Int32 UserId)
{
UserRepository.DeleteUser(UserId);
return Redirect(Url.Action("Index", "Home"));
}
但是 Home Controller Index 视图正在加载到 UpdateTargetId 中,因此我最终得到了一个页面中的一个页面。我在想两件事:
- 要么我在构建这个错误并且应该以不同的方式处理这种类型的操作(不使用 ajax)。
- 与其返回重定向结果,不如返回一个视图,其中包含在客户端执行重定向的 javascript。
有人对#1 有意见吗?或者如果 #2 是一个很好的解决方案,那么“重定向 javascript 视图”会是什么样子?