gpt4 book ai didi

asp.net - 在插入数据库之前,如何在回发之间保留临时值?

转载 作者:行者123 更新时间:2023-12-04 20:48:55 25 4
gpt4 key购买 nike

一般问题:

我正在尝试创建类似的东西:

enter image description here

用户可以从下拉列表中选择一个产品,点击添加,结果是另一个产品
在“已添加产品”部分下方添加的行。必须为通过每行中的下拉列表添加的每个产品选择“产品描述符”。只有当用户单击“提交”按钮时,每个产品行才会插入到数据库中。

问题:

在回发之间保持产品选择的最佳方式是什么?

我不担心坚持“产品描述符”选择,我相信我可以做到。我主要关心的是在将这些临时选择保存到数据库之前找到存储这些临时选择的最佳方法。

我目前的做法:

我现在这样做的方式是管理 View 状态中的 ProductListItem 对象列表。此列表绑定(bind)到显示添加的产品的 ListView。

Private Property SelectedProductList As List(Of ProductListItem)
Get
Return CType(ViewState("SelectedProductList"), List(Of ProductListItem ))
End Get
Set(ByVal value As List(Of ProductListItem ))
ViewState("SelectedProductList") = value
End Set
End Property

ProductListItem 类:
<Serializable()>
Public Class ProductListItem

Public Property ProductID As Integer
Public Property ProductName As String

' ProductDescriptor class represents Product Descriptor (details omitted)
Public Property Descriptor As ProductDescriptor

' Constructor omitted

End Class

添加按钮单击处理程序:
 Protected Sub btnAddProduct_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnAddProduct.Click

SelectedProductList.Add( New ProductListItem(...) )
ProductListView.DataSource = SelectedProductList
ProductListView.DataBind()

End Sub

我正在考虑在这里使用 Session 而不是 Viewstate,因为我在同一页面上还有另外两种类似的情况,我将对象列表保存在 viewstate 中,并且我担心 Viewstate 被损坏或得到太大。你怎么看?

谢谢你的时间!

最佳答案

既然你要求 最好的方法 ,我会使用 jQuery + knockoutJS。

现在,如果您想坚持使用传统的 WebForms 方法,为什么不 优雅 ??创建一个简单的 UserControl 来为您处理所有这些(您也可以将 UpdatePanel 与动态控件结合使用)。您只需要动态添加这些控件(如果您知道 Page's lifecycle,这很容易),I have some working examples on my GitHub site

在您的控件中,您将公开类型为 ProductListItem 的属性。在您的页面中,您将遍历所有选定的产品(用户控件)并简单地询问 ProductListItem属性(property)

这样您就可以与 ASP.NET 和谐相处

编辑 1

此外,并基于此:

I'm thinking to use the Session instead of the Viewstate here, because I have two other similar situations on the same page



也许控件是您的最佳选择

我不建议您使用 Session,作为个人选择,我倾向于避免使用 Session尽我所能,释放服务器资源,而不是 使用用户PC的力量尽可能多地使用客户端脚本,这样可以在需要时轻松扩展您的 Web 应用程序

关于asp.net - 在插入数据库之前,如何在回发之间保留临时值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12959617/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com