绑定到Dictionary <string,string =“”>其中Key包含方括号

时间:2016-12-02 06:29:40

标签: asp.net-mvc model-binding

我正在尝试绑定属于Dictionary的项目,并且一切正常,直到我遇到KeyValuePairs,其中Key包含方括号。例如,想象一下这种人为的情景:

model = new MyModel {
    MyDict = new Dictionary<string, string> {
        { "Apple[1]", "Green" }
    }
}

然后我创建一个表单如下:

Html.EditorFor(model => model.MyDict["Apple[1]"])

正如预期的那样,该字段如下所示:

<input id="MyDict_Apple_1__" name="MyDict[Apple[1]]"> type="text" value="Green">

问题在于,当提交表单时,ModelBinder会删除最后一个括号:ModelBindingContext.ModelName是“MyDict [Apple [1]”。

这是DefaultModelBinder中的错误,还是我错过了什么?

更新

我发现FormValueProvider如何从数据中读取密钥存在错误。具体来说,该错误位于Microsoft.AspNetCore.Mvc.Internal.PrefixContainer的GetKeyFromEmptyPrefix方法中。

目前我正在使用旧的绑定语法处理该问题,其中包含Key和Value的单独字段:

<input type="hidden" name="MyDict[0].Key" value="Apple[1]" />
<input type="text" name="MyDict[0].Value" value="Green" />

0 个答案:

没有答案