0

我有许多仅在工作流上下文中才有意义的 MVC 视图。例如,用户在另一个页面上提交信息,然后被重定向到只显示“成功”的页面..

由于重定向是 GET,因此无法通过调整 URL 来阻止用户手动导航到页面。

在这种情况下我该怎么办?重定向到错误页面,显示空白页面?

4

1 回答 1

1

在我看来,成功信息视图不应该有路由,因为它们不打算从浏览器 url 提供。在我们的项目中,我们通常直接从发布操作返回成功视图。例如,

 [HttpPost]
    public ActionResult ChangePassword(ChangePasswordModel model)
    {
        if (ModelState.IsValid)
        {

            bool changePasswordSucceeded;
            try
            {
                MembershipUser currentUser = Membership.GetUser(User.Identity.Name, userIsOnline: true);
                changePasswordSucceeded = currentUser.ChangePassword(model.OldPassword, model.NewPassword);
            }
            catch (Exception)
            {
                changePasswordSucceeded = false;
            }

            if (changePasswordSucceeded)
            {
                var infoModel = new AnyInfoModel();
                return View("ChangePasswordSuccess", infoModel); // This is not redirected, but success shown in the current route url.
            }
            else
            {
                ModelState.AddModelError("", "The current password is incorrect or the new password is invalid.");
            }
        }
        return View(model);
    }

但这也有一个缺点,如果用户不小心点击了浏览器的 F5 按钮,它会尝试重新发布表单。

于 2012-11-23T07:24:47.493 回答