2

当人们在我的 ASP.NET MVC 网站上注册时,我会通过电子邮件发送一个激活链接,以便他们可以激活他们的帐户并登录。我想在注册成功并发送电子邮件时显示一条消息。为此,我重定向到另一个页面。

当人们直接访问此 URL 时,我不想显示此页面,因为它不是普通页面。我使用 TempData 检查它们是否来自注册页面。

public ActionResult Register()
{
    AccountRegisterView accountView = InitializeAccountRegisterViewWithIssue(false, "");

    return View(accountView);
}

[HttpPost]
public ActionResult Register(AccountRegisterView accountView)
{
    if (!ModelState.IsValid)
    {
        return View(accountView);
    }

    // Register user and send activation link via email...

    TempData["success"] = true;

    return RedirectToAction("RegisterEmail");
}

public ActionResult RegisterEmail()
{
    if (TempData["success"] != null)
    {
        return View();
    }

    return RedirectToAction("Login");
}

我想知道这是否被认为是最佳做法。或者我应该这样做吗?

4

1 回答 1

1

我认为这是一个非常好的使用TempData[]. 您需要一个用于一次性请求的变量来决定是否应该显示该页面。

我想您可以使用会话变量,但您需要记住清除会话。您可以使用某种类型的注册密钥,但您也需要跟踪这些注册密钥。长话短说,不,你很好。

于 2013-11-13T14:36:37.140 回答