0

I have a small problem. I want to have dropdown list with some objects. After clicking on one I want to add it to list with textfield for naming it. I don't want to limit quantity of this fields. I want to receive in controller ID (stored in dropdown list) and name (given by user) for each selected item. How can I do it? I was thinking about storing it in some fields as a text, and parsing in cotroller but I think it's not elegant.

EDIT. Ok, Thansk for your help, but it's not working for me correctly. I generate html like this:

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

In my controller I'm receiving this dictionary. The problem is that quantity of elements is correct, but all values are null. What is wrong here?

4

2 回答 2

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

于 2013-02-18T12:46:15.937 回答
1

解决此问题的最佳方法是使用数组样式的模型绑定。

因此,对于您希望命名的每个元素,您创建一个隐藏字段来存储下拉值以及一个文本字段来存储用户给定的名称。您将它们命名如下:

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

每次增加索引值。这可以通过一点 JavaScript 轻松实现。然后,您创建一个以 aKeyValuePair<string, string>[]作为参数的操作方法。然后,您将能够通过循环或 LINQ 表达式毫无问题地解析您的值。

于 2013-02-18T12:48:28.107 回答