首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >ASP.NET MVC - TempData -好的或坏的实践

ASP.NET MVC - TempData -好的或坏的实践
EN

Stack Overflow用户
提问于 2008-12-22 16:30:13
回答 8查看 57.8K关注 0票数 96

我使用Scott Gu的预览版5博客文章中详细介绍的AcceptVerbs方法来处理ASP.NET MVC中的表单条目:

  • 用户通过GET
  • 获得一个空表单用户通过POST将填写的表单发布到同一操作
  • 该操作将验证数据,采取适当的操作,并重定向到新视图

这样我就不必使用TempData了。也就是说,我现在必须在这个过程中添加一个“确认”步骤,这似乎需要使用TempData

出于某些原因,我对使用TempData有一种反感--认为它是需要围绕它进行设计的东西。

这到底是一个合理的担忧,还是我在胡编乱造?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2008-12-25 19:35:36

我认为临时数据是一种通知用户的即发即忘机制。提醒他们最近所做的事情是很棒的,但我也会犹豫是否将其作为某些用户过程中的一个必要步骤。原因是如果他们刷新页面,我相信它会消失。好吧,我想我也在犹豫是否使用它,因为它的可靠性并不是很好定义。

我想知道问题是否在于您在确认步骤之前将操作重定向到另一个页面。我想知道在他们第一次提交之后,你是否可以做足够的处理来生成确认对话框,然后返回带有确认问题的原始页面。与您进行验证的方式类似,不同之处在于验证规则检查是否执行了确认步骤(在其他验证通过之前,确认UI一直处于隐藏状态)。

票数 26
EN

Stack Overflow用户

发布于 2009-02-19 14:52:25

没有必要对TempData产生反感……但如果使用不当,这肯定是一个糟糕设计的迹象。如果您使用的是GET,则TempData是将消息从POST操作传输到GET操作的最佳实践。请考虑以下内容:

您在URL Products/New中有一个表单。表单Posts到Products/Create,这将验证表单并创建Product,如果成功,控制器将重定向到URL Products/1,出错时将重定向回products/New以显示错误消息。

Products/1只是产品的标准GET操作,但我们希望显示一条消息,指示插入成功。TempData是这方面的最佳选择。将消息添加到Post Controller中的TempData中,并在视图中添加一些if逻辑和完成。

在失败时,我一直在Post操作中将在formCollection中输入的值和一组错误消息添加到TempData,并重定向到初始操作Prodcuts/New。我在视图中添加了一些逻辑,以便用之前输入的值以及任何错误消息填充表单输入。在我看来又好又干净!

票数 78
EN

Stack Overflow用户

发布于 2008-12-23 01:11:45

我认为在使用TempData之前最好还是犹豫一下。TempData存储在会话中,这可能会在以下情况下对您产生影响:

  1. 您现在不在您的站点上使用会话
  2. 您的系统需要扩展到高吞吐量,例如,您希望完全避免会话状态
  3. 您不想使用cookies (我不知道MVC现在对无cookies会话的支持程度如何)

如果您的站点需要高可用性,那么关于应用会话状态还有其他注意事项,但这些都是可以解决的问题。

票数 31
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/386681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档