2010-05-17 87 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