0

我有一个奇怪的问题。

我在 Razor 中制作动态表格。我正在使用字典来存储动态添加的输入。我生成这样的代码:

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

我在我的控制器中收到 this dictionary。它总是有我添加的许多元素,但它们都是空的。

这是我的模型的一部分:

public class MetriceModelTaskSchedule
{
     public IEnumerable<KeyValuePair<long, string>> Inputs { get; set; }
}

这里有什么问题?

4

1 回答 1

2

这里有什么问题?

KeyValuePair<TKey, TValue>该类具有只读的KeyValue属性这一事实。它们没有设置器,意味着模型绑定器根本无法设置它们的值。

所以一如既往地从定义一个视图模型开始:

public class InputViewModel
{
    public long Key { get; set; }
    public string Value { get; set; }
}

接着:

public class MetriceModelTaskSchedule
{
    public IEnumerable<InputViewModel> Inputs { get; set; }
}

或者,您可以使用字典:

public class MetriceModelTaskSchedule
{
    public IDictionary<long, string> Inputs { get; set; }
}

还要确保您尊重standard naming convention视图中的输入字段,以便模型绑定器可以成功地将它们绑定到您的模型:

<div>
    <input type="text" name="Inputs[0].Key" value="1" />
    <input type="text" name="Inputs[0].Value" value="value 1" />
</div>
<div>
    <input type="text" name="Inputs[1].Key" value="2" />
    <input type="text" name="Inputs[1].Value" value="value 2" />
</div>
...
于 2013-02-18T15:27:00.253 回答