我正在使用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"));
}
然而,主页控制器索引视图被加载到UpdateTargetId中,因此我最终得到了一个页面内的页面。 我正在考虑两件事:
- 要么我设计得不对,应该以不同的方式处理这种类型的操作(不使用ajax)。
- 不返回Redirect结果,而是返回一个带有javascript的视图,在客户端上执行重定向。
有谁对#1有评论? 如果#2是一个好的解决方案,"redirect javascript view"会是什么样子?
return JavaScript( "window.location = '" + Url.Action("Edit","Dispatch") + "'" );
- Chris Morgan