2010-05-17 85 views
5

我正在处理显示订单信息的窗体。每个订单都有一个唯一的ID,但它们在表单上不一定是顺序的。此外,字段的数量可能会有所不同(表单上每行一个字段)。表单中的输入不会直接映射到数据库中,而是会添加到数据库中的当前值中,然后保存。表单的一个例子如下图所示 - 右侧的标注显示了每行的id。 Form example处理可变数量的表单域

我知道如何生成这样的表单,但我无法弄清楚如何可以轻松地处理这些行中的每一行。我也知道如何为每个字段赋予一个唯一标识符,如name="order-23"name="order[23]",但是如何翻译该名称以便我可以更新数据库中的相关记录?


编辑:一个解决方案,我能想到的将是通过窗体域FormCollection迭代,如果字段的名称匹配的模式,那么我会提取该号码字段名称并处理它。
但是,我觉得必须有一个更简单的方法去实现它 - 这种方法可能会涉及每个字段的字符串处理的公平位,并且如果必须为每行添加额外的字段稍后的。

+1

+1为模拟,这很酷:) – 2010-05-17 04:42:44

+2

@codeka - 我使用Balsamiq模型 - 它是一个伟大的计划 – 2010-05-17 04:43:24

回答

1

回发后你没有ID列表吗?我相信你不应该依赖实际从表单发送的ID,因为任何人都可以将表单上的ID更改为他们想要的任何内容,所以这是一个安全问题。所以你应该在回发之后有一个你想要更新的ID列表(你用来创建表单的同一个列表)。在这种情况下,您确切知道应使用什么id字符串从FormCollection中检索值。

如果您确实无法获取您要更新的ID列表,请按照您在评论中的建议使用FormCollection迭代。字符串处理与请求处理中所有其他内容的比较并不昂贵。

+0

我相信我可以在回发之后获得ID列表(通过直接从数据库中检索它们)。如果这种方法确实起作用,那么我只需要看看如何从“FormCollection”中提取必需的字段并更新它 - 不应该太难。 – 2010-05-18 22:51:42

+0

我最终做了两个 - 我从数据库中检索每个订单,然后使用它的order-id访问它在FormCollection中的值 - 我基于我的解决方案部分基于http://stackoverflow.com/中提供的方法问题/ 762825 /如何-可以-A-的FormCollection待列举式-ASP净MVC/763952#763952 – 2010-05-24 00:16:24

0

如果您有这些名称,那么只需使用Request.Form [“order-23”]来读取这些值,或者在页面预init中重新创建控件,并且您将可以访问保存中的值事件直接通过创建的控件。

0

我已经在我的CMS中完成了这个加载。

基本上我有点欺骗。

的想法是这样的....

呈现的形式向客户端,然后再看看gneerated的源代码。 您应该看到它生成了具有操作属性的表单标记。

当你点击提交按钮的形式将被发送到该网址,以便在提交订单的情况下,你会后的页面回OrderPage.aspx?的OrderId = XXXX

然后在服务器上你会建立你的数据库中包含类似的更新语句...

“Update订单,其中订单id =” +的Request.QueryString [ “的OrderId”]

那么,你如何更新动作...

在调用页面le ts说你有一个名为“新秩序”的链接,当该链接被点击时,你需要做2件事...

  1. 重定向到本页面。
  2. 为此新订单生成订单ID。

好吧,第一个很简单,只需链接到这个页面。

第二...

如果这个页面不是回发if(!IsPostback){/ *获取一个新的ID * /}取决于您的订单ID这可能涉及生成一个新的GUID或做一些事情,如获取列表中的下一个数字从数据库中选择max(id)。

一旦你有这个新的ID你应该仍然在page_load事件。

this.form.Action = this.form.Action +“?OrderId =”+ yourNewOrderId;

... tada ...

发送页面回到客户端。

查看数据来源。

+0

哦,我忘了添加,当这个页面被用户推回提交按钮时,它会提交回到服务器和Request.QueryString [“OrderId”]将包含您新生成的订单ID和填写的表单字段,当然这些字段您按照通常的方式处理。 – War 2010-05-17 14:52:14

+0

我不明白这是如何适用于我的情况 - 我知道orderID是什么以及如何得到它,但我需要确定每个行中的值是多少。然后我必须从数据库中检索合适的部分(与该行共同响应),并用新值更新该部分。我理解表单是如何工作的 - 我想了解的是如何从行中提取值,当我不知道哪些行存在时。 – 2010-05-18 02:42:01