ASP.NET MVC - 维护网页状态

时间:2016-08-23 18:11:26

标签: javascript jquery ajax asp.net-mvc

我们有一个silverlight应用程序,在点击链接时保持状态并返回到它。

我想知道是否有办法使用Asp.net MVC实现类似的东西?基本上现在用户使用横幅中的链接进入搜索页面,在搜索页面中我们显示一些项目..用户点击其中一个项目,另一个页面打开,将他带到列出项目信息的主页面。用户可以再次点击搜索,但这次当然会打开一个新的搜索窗口。

我想知道是否有办法将已打开的窗口中的现有内容加载到新的搜索窗口中?

如果它有任何区别,搜索页面将启用ajax。

3 个答案:

答案 0 :(得分:3)

正如Shyju指出的那样,Http是无国籍的。有几种方法可以在Web应用程序中的多个页面之间存储和共享数据。 仅举几例,您可以使用:

  • Cookies(不保存密码等安全敏感数据) 饼干)
  • 会话
  • 浏览器的本地存储空间(http://www.w3schools.com/html/html5_webstorage.asp
  • 在MVC中,您可以使用ViewBag,ViewData或TempData
  • 您可以在URL
  • 中将数据作为查询参数传递

答案 1 :(得分:2)

您不希望在ASP.Net MVC中维护状态。这是一个不好的做法。

如果要在操作方法之间传递状态,可以使用TempData

它使用会话状态,并在您检索数据后立即自动清除它。

除了TempData之外,ASP.Net还提供了一些附加方法。您可以阅读更多here。在您的场景中,TempData是最佳选择。

答案 2 :(得分:1)

众所周知,HTTP是无状态协议,每个HTTP请求都不知道先前的请求。

ASP.NET还提供了状态管理技术,可以帮助我们在从一页重定向到另一页时维护数据。有几种方法。

  1. 隐藏字段(用于在客户端隐藏您的数据。它在UI上对用户不直接可见,但我们可以在页面源中看到该值)。

  2. Cookie(用于存储数据,但数据应该很小。就像一个小的文本文件,我们可以在其中存储数据,这些文件存储在浏览器的客户端内存中)。

  3. 查询字符串(通常用于将值从一页传递到下一页)。

  4. 查看数据(帮助我们在从控制器发送数据到视图时维护数据。这是从ViewDictionary派生的对象的词典)。

  5. View Bag(与View数据相同,不同之处仅在于View bag是动态属性的对象)。

  6. 临时数据(也是ViewData的字典对象,将值存储在键/值对中。它是从TempDataDictionary派生的。主要用于将数据从一个控制器传输到另一个控制器)。