我有一个奇怪的问题。
我在Razor中制作动态表格。我正在使用字典存储动态添加的输入。 我生成这样的代码:
<input type="hidden" value="96" name="Inputs[0].Key">
<input type="text" name="Inputs[0].Value">
我在控制器中收到dictionary
。它总是有我添加的元素,但所有元素都是空的。
这是我模特的一部分:
public class MetriceModelTaskSchedule
{
public IEnumerable<KeyValuePair<long, string>> Inputs { get; set; }
}
这里有什么不妥?
答案 0 :(得分:2)
这里有什么不妥?
KeyValuePair<TKey, TValue>
类具有只读的Key
和Value
属性这一事实。它们没有setter意味着模型绑定器根本无法设置它们的值。
因此,首先要定义视图模型:
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>
...