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 に答える