Pau*_*aul 3 asp.net-mvc asp.net-mvc-3 asp.net-mvc-4
我正在自学 MVC,并且正在努力为我的问题找出最佳解决方案。我有一个带有大量输入字段的搜索控制器。我还将有多个搜索字段的重载,例如基本搜索高级搜索 searchByCategory 等。
当搜索表单发布时,我重定向到另一个显示搜索结果的操作。如果我按 f5,则再次触发 get 操作,而不是在我的帖子重定向到的操作中刷新搜索结果。理想情况下,我想在Action Method不使用查询字符串的情况下重定向到搜索结果,或者检测何时刷新并重新查询数据库,并在同一个搜索控制器中使用不同的操作。我已经阅读了很多关于此的帖子,我能找到的唯一 2 个解决方案是使用会话变量或 TempData。任何人都可以建议什么是最佳实践
从注释中
大部分时间我更愿意使用时间TempData代替QueryString。这样可以保持 Url 干净。
题
任何人都可以建议什么是最佳实践
回答
一旦数据被发送到Action Method从数据库中获取结果之后,据我所知,您可以TempData用来存储发布的数据。它就像一个DataReader类,一旦读取,数据就会丢失。这样存储的数据TempData将变为空。
var Value = TempData["keyName"] //Once read, data will be lost
Run Code Online (Sandbox Code Playgroud)
因此,即使在读取数据后也要保留数据,您可以像下面这样活着
var Value = TempData["keyName"];
TempData.Keep(); //Data will not be lost for all Keys
TempData.Keep("keyName"); //Data will not be lost for this Key
Run Code Online (Sandbox Code Playgroud)
TempData也适用于新的选项卡/Windows,就像Session变量一样。
您也可以使用SessionVariable,唯一的主要问题是SessionVariable 与TempData. 最后,您还可以跨控制器/区域保存数据。
希望这篇文章对你有很大帮助。
| 归档时间: |
|
| 查看次数: |
7547 次 |
| 最近记录: |