2013-02-18 73 views
0

我有一個小問題。 我想有一些對象的下拉列表。點擊之後,我想將它添加到列表中並用文本框命名它。我不想限制這些字段的數量。我想在控制器ID(存儲在下拉列表中)和名稱(由用戶給出)中接收每個選定項目。我該怎麼做? 我正在考慮將它作爲文本存儲在一些字段中,並在cotroller中解析,但我認爲它並不優雅。ASP.NET MVC3中的動態表格Razor

編輯。好的,Thansk爲您提供幫助,但它對我來說並不正確。 我生成html這樣的:

<input type="hidden" value="96" name="Inputs[0].Key"> 
<input type="text" name="Inputs[0].Value"> 

在我的控制器我收到這本字典。問題是元素的數量是正確的,但所有的值都是空的。這裏有什麼問題?

+0

回答您的修改:如果您正在使用您發佈的代碼,則缺少用於輸入的關閉標籤。你應該這樣做:''或這個'' – 2013-02-18 16:14:41

回答

1

使用IEnumerable<KeyPairValue<string,string>> MySelectedItem = new List<KeyPairValue<string,string>>();的模型,並將其添加到列表中時,將其命名爲像一個數組:

MySelectedItem[1].Key, MySelectedItem[1].Value, MySelectedItem[2].Key... 

(我沒有測試過這一點,但它應該工作)

編輯:檢查這個博客文章更好的解釋如何做到這一點:http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx

+0

回答您的編輯:如果您正在使用您發佈的代碼,則缺少用於輸入的關閉標籤。你應該這樣做:''或這個'' – 2013-02-18 16:08:07

1

最好的方式去做這件事是通過使用數組式的模型綁定。

因此,對於您希望命名的每個元素,您可以創建一個隱藏字段來存儲下拉值以及存儲用戶指定名稱的文本字段。你的名字如下:

<input type="hidden" name="element[0].Key" /><input type="text" name="name[0].Value" /> 

每次增加索引值。這可以通過一些JavaScript輕鬆實現。然後創建一個採用KeyValuePair<string, string>[]作爲參數的操作方法。然後,您將可以通過循環或LINQ表達式來解析您的值。