Asp.net mvc 3 ASP.NET MVC3中的KeyPairValue

Asp.net mvc 3 ASP.NET MVC3中的KeyPairValue,asp.net-mvc-3,razor,Asp.net Mvc 3,Razor,我有个奇怪的问题 我正在用剃须刀制作动态表格。我正在使用字典来存储动态添加的输入。 我生成这样的代码: <input type="hidden" value="96" name="Inputs[0].Key"> <input type="text" name="Inputs[0].Value"> 这里有什么问题 这里有什么问题 KeyValuePair类具有只读的和属性这一事实。它们没有setter,这意味着模型绑定器无法设置它们的值 因此,请始终从定义视图模型开始:

我有个奇怪的问题

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

<input type="hidden" value="96" name="Inputs[0].Key">
<input type="text" name="Inputs[0].Value">
这里有什么问题

这里有什么问题

KeyValuePair
类具有只读的和属性这一事实。它们没有setter,这意味着模型绑定器无法设置它们的值

因此,请始终从定义视图模型开始:

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

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

也许你没有得到代码?好的,现在我可以看到代码了。我按照你写的那样做了(我添加了额外的模型),每个键都有0,每个值都有null。那么你可能不遵守输入字段的命名约定。请阅读我在回答中链接的文章,并确保在检查页面的HTML时,输入字段的名称是相应的。哦,是的,就是这样。我做得没错,但当我在寻找错误时,我又犯了一个错误。谢谢你的帮助!
public class MetriceModelTaskSchedule
{
    public IEnumerable<InputViewModel> Inputs { get; set; }
}
public class MetriceModelTaskSchedule
{
    public IDictionary<long, string> Inputs { get; set; }
}
<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>
...