asp.net-mvc - 在 ASP.NET MVC 中使用 Tempdata - 最佳实践

标签 asp.net-mvc asp.net-mvc-3 asp.net-mvc-2 tempdata

我正在使用 ASP.NET MVC 3 构建 Web 应用程序。

我想做的是在两个 Controller 之间传递值,尽管有很多方法可以做到这一点,但我对此特别感兴趣的是使用TempData

public ActionResult Action1()
{
    string someMessage;
    Test obj = SomeOperation();
    if(obj.Valid)
    {
        someMessage = obj.UserName;
    }
    else
    {
        someMessage = obj.ModeratorName;
    }

    TempData["message"] = someMessage;

    return RedirectToAction("Index");
}

public ActionResult Index()
{
    ViewBag.Message = TempData["message"]

    return View();
}

那么这里使用 TempData 是否正确?我的意思是,根据最佳编程实践,这种使用 TempData 的正确方法是吗?

在什么实时情况下应该使用TempData

注意:我已浏览以下链接

谢谢

最佳答案

TempData 是一个存储桶,您可以在其中转储仅以下请求所需的数据。也就是说,您放入 TempData 的任何内容都会在下一个请求完成后被丢弃。这对于一次性消息非常有用,例如表单验证错误。这里需要注意的重要一点是,这适用于 session 中的下一个请求,因此该请求可能会在不同的浏览器窗口或选项卡中发生。

回答您的具体问题:没有正确的使用方法。这一切都取决于可用性和便利性。如果它有效、有意义并且其他人相对容易理解它,那就很好。在您的特定情况下,以这种方式传递参数很好,但奇怪的是您需要这样做(代码味道?)。我宁愿在资源中(如果它是资源)或数据库中(如果它是持久值)保留这样的值。从您的使用情况来看,它似乎是一种资源,因为您将其用作页面标题。

希望这有帮助。

关于asp.net-mvc - 在 ASP.NET MVC 中使用 Tempdata - 最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12422930/

相关文章:

Ajax.BeginForm 不在 dom 内创建表单标签

asp.net-mvc - 在VS2012中打开MVC3项目

jquery - ASP.NET MVC 3 中的查询字符串被缩短

asp.net - 您将如何验证ASP.Net MVC 2中的复选框?

javascript - 从具有两个下拉列表的表行中,获取选定的值以及更改的下拉列表

javascript - 获取C#数据表的Json字符串并在jquery数据表中显示

asp.net-mvc - 从客户端检测到潜在危险的 Request.Form 值 - ASP.NET MVC

如果容器隐藏,jQuery.validate 无效

asp.net-mvc-2 - 在 asp.net MVC 中发布失败

asp.net-mvc - 使用 MVC 和 jQuery 进行内联客户端验证