c# - 如何在不使用 EntityFramework 保存到数据库的情况下在 ASP.NET 中跨实体请求保存状态?

标签 c# asp.net entity-framework webforms

我正在开发一个 CRUD ASP.NET WebForms Web 应用程序,该应用程序由几个页面组成,用户可以在这些页面中填写数据。在用户单击最后一页上的“完成”之前(出于各种原因),我的客户不想在页面之间将实体存储在数据库中。有哪些选项可以在页面之间传播填充的数据,哪个选项最不坏?根据我的阅读,我已经看到可以使用 ViewState 和 Server.Transfer。任何其他选项,最好使用更少的魔法字符串和更多类型安全的数据绑定(bind)到实体对象?

最佳答案

使用 ViewState 将显着增加您发送的数据量,因为所有 Viewstate 数据都被序列化到表单中的隐藏输入中,因此您添加对象,您的 HTTP 请求-响应将显着增长。

这真的没有 Elixir 。如果您的数据不太复杂,我会将这些值存储在查询字符串中。如果您的对象变得越来越复杂和庞大,并且您想保持类型安全,我会使用 Session,但请记住自己清理!

另一种选择是使用 MVC 范例并使用隐藏输入以其自身的形式存储值。这意味着如果用户中途退出,您无需担心清理您的 session ,但它还可以保持您的查询字符串干净。

认为这就是您所有的选择,查询字符串 View 状态(不要这样做) session 隐藏变量.

好的,所以你必须序列化你的数据,所以你不能持久化上下文。这是不可序列化的,所以以上是您的选择:

它们各有正反两面,

  • Viewstate(低效但易于使用)
  • 查询字符串(高效但不适合大数据集且可编辑)
  • session (增加服务器负载并需要清理,但允许您仅将数据保存在服务器上)
  • 隐藏变量(对用户隐藏但比 View 状态更有效需要每个属性的大量隐藏输入)

任你选!

关于c# - 如何在不使用 EntityFramework 保存到数据库的情况下在 ASP.NET 中跨实体请求保存状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13802404/

相关文章:

javascript - asp.net 应用程序事件类中的 Twitter Bootstrap 导航?

c# - LINQ to EF、Left Join 和 group by 子句

entity-framework - 更改所有实体的标识列名称

c# - 当前上下文中不存在名称 gridview1

c# - 如何在每分钟循环一次Powershell直到条件成立?

c# - DataTable:如何获取重复项和重复项的行号

javascript - 由 HttpHandler 生成的 JS 的安全性

javascript - onkeydown ='return (window.event.keyCode doesn' t 允许通过鼠标单击选择输入

postgresql - 为什么每秒对我的Asp.Net Core API的并发请求数增加时,响应时间会增加

c# - Windows Phone 的 pivot TitleTemplate 中的数据绑定(bind)