1

我是 asp.net mvc 的新手,所以请多多包涵。

当我重定向到另一个 Action 并且我不想用信息“弄脏”URL 时,我正在使用 TempData。例如:

[AllowAnonymous]
public ActionResult ConfirmationEmailSent()
{
    if (TempData["Username"] != null)
    {
        ViewBag.Username = TempData["Username"];
        return View("ConfirmationEmailSent");
    }
    return View("Error");
}

到目前为止一切顺利,用户获得了一个简单而无辜的网页,其中包含一些包含他的用户名的消息。但是如果用户点击“刷新”按钮,那么他会看到“错误”视图,因为 TempDate 不可用。我希望能够使用查询字符串中未显示的信息重定向到操作,并且如果用户点击刷新按钮,那么他将获得相同的页面。任何想法如何做到这一点?(无会话)

谢谢你。

4

2 回答 2

0

听起来cookies会做你想做的事。然后在你完成后删除它们(或者不要在它们上设置到期日期,在这种情况下,浏览器会在会话完成时为你删除它们)。

于 2014-03-10T09:24:49.097 回答
0

您需要的是一种让信息以与浏览器关联的方式在多个请求中持续存在的方法。QueryString 和 Session 是您最好的两个选择。

如果视图是表单发布的结果,您可以将其设为隐藏输入,但用户在刷新时会收到提示(您要重新提交表单吗?),但这并不好,您应该这样做发布/重定向/获取 (PRG)。

埃里克

于 2013-05-23T20:33:31.943 回答