C# 编辑对象时,保存正在编辑的ObjectID记录以便以后保存的最佳方法是什么?

C# 编辑对象时,保存正在编辑的ObjectID记录以便以后保存的最佳方法是什么?,c#,asp.net,C#,Asp.net,我有一个带有gridview的页面和一个订单列表。 当用户在gridview中单击订单上的编辑时, 将为用户填充文本框列表,其中包含他选择的特定顺序的详细信息。 然后,用户可以按下更新按钮,他正在编辑的顺序将更新到数据库 还有许多其他类似的页面,例如发票、产品等 我的问题:我想找到正确的方法来跟踪我正在编辑的对象的ID。 我想知道在更新按钮中存储项目的ID是否是一个好主意 btnOrderUpdate.Attributes.Clear(); btnOrderUpdate.Attributes.A

我有一个带有gridview的页面和一个订单列表。 当用户在gridview中单击订单上的编辑时, 将为用户填充文本框列表,其中包含他选择的特定顺序的详细信息。 然后,用户可以按下更新按钮,他正在编辑的顺序将更新到数据库

还有许多其他类似的页面,例如发票、产品等

我的问题:我想找到正确的方法来跟踪我正在编辑的对象的ID。 我想知道在更新按钮中存储项目的ID是否是一个好主意

btnOrderUpdate.Attributes.Clear();
btnOrderUpdate.Attributes.Add("OrderID", orderID.ToString());
更新时,我需要再次获取OrderID,例如

var orderID = btnOrderUpdate.Attributes("OrderID");
我想远离Cookie,因为我可以使用的Cookie数量是有限的,而且我无法成功加密Cookie

我也不想使用我更新的hiddenfield,因为如果用户查看源代码,这很容易给他提供ID


你推荐我用什么?属性只是我的一个想法,它的标准方法是什么?

您已经排除了使用隐藏形式的可能性,这是本例中的标准约定。出于这个原因,我也怀疑您是否希望将其存储在查询字符串中,因为这是显而易见的


在您的情况下,我建议将其存储在会话中。如果用户的会话不在滑动窗口中,则应将其保持活动状态约20分钟。一旦不再需要它,您也可以将其从会话中删除。

您可以利用
System.Web.HttpContext
来满足您的需求。当按下更新按钮时,只需在
HttpContext.Items
字典中将(ObjectId,Value)另存为(key,Value)对,方法如下:

HttpContext.Items["OrderID"] = orderID;

之后,当您需要保存值时,只需循环使用
HttpContext.Items
的键和相应的
OrderId
s,并相应地保存值。

如果您想将OrderId保留在页面范围内,请使用ViewState

ViewState["orderID"] = orderID;
和服务器作用域使用会话

Session["orderID"] = orderID;

网络表单?MVC?您使用的是什么框架?Sesstion或ViewState(What=隐藏字段)。谢谢,所以您宁愿使用隐藏表单(如在hiddenfield控件中?)?人们是否加密或扰乱hiddenfield值?还是将其作为纯文本保存在隐藏字段中是一种良好的做法?如果我编辑hiddenfield的值呢?如果我需要在服务器上的临时作用域中访问它,我通常会将它作为纯文本保存在隐藏字段中。如果您认为这样做很重要,您可以对其进行加密或加扰。因为它位于一个隐藏字段中,只要您将runat设置为server,它在代码中始终是可访问的,所以您仍然会收到更新的值。