发送整个对象只是为了更新状态

Sending the whole object just to update status?

本文关键字:更新 状态 对象      更新时间:2023-09-26

Aspx页面。

形式的许多字段

我们表示JS对象中的所有字段。

我们只是将UI中记录的状态更改为"0"。(在ui中)

我们需要将新状态保存在DB中。


问题:

我们应该吗

1)将所有字段填充到对象中,通过ajax将整个对象发送到服务器,并在服务器中遍历他的字段,查看哪些字段发生了更改?

2)生成一个仅用于更改状态的特殊命令,并使用ajax将该命令发送到服务器?

第一个更OOP,但我找不到任何将所有字段发送到服务器的逻辑——只是为了改变状态。。。

p.s.

这是我和的一位同事之间的争执

我建议第二个。he,第一个

如果您从CQS/CQRS的角度(命令-查询分离/命令-查询-责任分离)来考虑它,您应该选择第二种方法(您的方法),因为您所描述的是您在代码中发布和处理的特定命令。你发送的命令包含了告诉你的系统做某事所需的所有信息(命令音)。通过这种方式,您可以让代码执行单个职责,从而产生更可读、更可维护的代码。

在你的论点中,我站在你一边。

祝你好运!

我认为没有理由仅仅为了传递一个值而发送整个对象。如果这一切都发生在一段后端代码中,那么对象已经存在,而您只传递了一个引用,这是一回事。由于你是通过网络传递的,所以发送的数据越小越好。

当用户决定更改状态时,我会创建一个通用处理程序(.ashx)并通过Ajax调用它。您只需要传入对象的id和新状态。

OOP擅长很多事情,但进行快速/轻松的编辑并不是其中之一。

唯一需要注意的是,任何通常会因属性更改而启动的次要逻辑。例如,更改状态是否需要重新验证整个对象?

如果没有,请不要担心。如果是,请考虑如何简化它。

我会选择工作量较小的替代方案。从体系结构的角度来看,这并不重要。

正如其他地方建议的那样,您可以在有问题的页面上使用Generic Handler(.ashx)、Web Service(.asmx),甚至是WebMethod标记的公共方法。在这种情况下,您需要的是一个简单的Ajax调用(不要与MicrosoftAjax Toolkit混淆)。

例如,请参阅jQuery的post方法。打这样的电话很简单。对于一个经典的webforms项目,我个人会在aspx中使用ashx或asmx标记WebMethod。对于MVC,还有更多的选项(JsonResult)。

我在ASP.NETWebForms中遇到的一个严重问题是视图状态和每次请求传输的数据量。最好有简单/更轻的处理程序,或者从JS中定向的web服务。