如何避免使用TempData

时间:2013-05-23 19:49:37

标签: asp.net-mvc tempdata

我是asp.net mvc的新手,所以请耐心等待。

我在重定向到另一个动作时使用了TempData而我不想"脏"带有信息的URL。例如:

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

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

谢谢。

2 个答案:

答案 0 :(得分:0)

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

如果视图是表单帖子的结果,则可以使其成为隐藏输入,但用户在刷新时会收到提示(是否要重新提交表单?),但这不好,因为你应该做一个Post / Redirect / Get(PRG)。

埃里克

答案 1 :(得分:0)

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