2010-04-21 77 views
1

我有一個表單(其中包含2個多選列表框)。基本上,您可以使用一些添加/刪除按鈕從左側項目的完整列表添加項目到右側項目。如何從列表框中獲取所有未在ASP.NET MVC中選擇的值

問題是,我看不到在發回控制器時拾取列表框內容的方式。

我按照這個例子: http://ittecture.wordpress.com/2009/04/30/tip-of-the-day-198-asp-net-mvc-listbox-controls/

,如果你已經在發佈前實際選擇ListBox中的項目也能正常工作。這不是我認爲這個UI應該表現的方式。

希望是有道理的, 尼克

+1

有沒有一種方法可以重現服務器端提交的項目的原始列表? (我的意思是你顯然是從某處提供的)。然後原始項目 - 選定的項目=未選擇的項目。 – Ryan 2010-04-21 18:11:48

+0

不是因爲沒有選定的項目。列表框包含項目,但他們沒有被選中,所以不要註冊服務器端 – 2010-04-21 19:10:42

回答

1

感謝您的幫助球員。我忘了提到我正在使用jQuery填充選定項列表框。不知道這是否重要。

最後,我通過在發佈之前選擇jQuery中的所有onclick項目來解決它。看起來像最簡單的解決方案。

0

除了列表框,有幾個隱藏的輸入字段舉辦「當前添加」項目。列表框選擇將在選擇時指示「要移除的項目」。

好,澄清。你有左和右列表框。左側有一個可用項目,選定的項目已發佈,然後添加。正確的一個保存當前添加的項目,並且選擇的項目被髮布,然後從添加的項目中移除

現在,您還需要保存當前添加的項目。你可以通過一堆做到這一點

<input type="hidden" name="currently_added" value="itemid" /> 

隱藏的字段。

是的,你可以去jQuery,但這是一個簡單的方法;並非每個網站都應設計爲需要打開JavaScript。上述解決方案在未啓用JavaScript的情況下運行

從頁面您的文章將會給你3個數組:

  1. 左側框中選擇商品添加
  2. 右側框中選定的項目,除去
  3. 隱藏字段 - 已添加的項

你拿(3),刪除(2),添加(1),並顯示相同的頁面或做任何你想要的。

+0

對不起,但我很困惑你的答案。你能澄清一下嗎? – 2010-04-21 17:34:08

+0

補充說明。 – queen3 2010-04-22 06:53:27

0

我不認爲列表框是你想控制右邊的控件。列表框的工作方式(通過發佈選定的項目)不是你想要實現的。

你可以考慮有一個網格,甚至只是一個帶有多個字符串的div。有更多Javascript/JQuery需要編寫,但它會提供很好的用戶體驗,因爲在所有工作完成之前不需要回傳。

您需要使用JavaScript/JQuery根據要添加和刪除的按鈕來添加和刪除div中的項目。

此外,對於在右側添加的每個項目,您將需要添加一個隱藏的輸入字段:

<input type="hidden" id="SelectedItems" value="..." /> 

將該值設置爲新添加的項的密鑰或ID。如果您從右側控件中刪除一個字段,請確保刪除相關的隱藏字段。

,能夠處理該用戶已刪除了正確的項目,你需要隱藏字段,表示其已被刪除:

<input type="hidden" id="RemovedItems" value="..." /> 

然後在您的控制器,您可以添加兩個參數來操作(或將兩個字段添加到視圖模型),這將是字符串數組。這將被設置爲添加的隱藏字段中的所有值,以及所有已刪除的值。

相關問題