我正在编写的 html 帮助程序存在模型绑定问题。我已经在我的模型上声明了一个属性来处理 html 属性,简而言之;
public IDictionary<string,object> HtmlAttributes { get; set; }
然后我在Scott Hanselman 的帖子中呈现以下 html ;
<input type="hidden" id="HtmlAttributes[0]_Key" name="HtmlAttributes[0].Key" value="align" />
<input type="hidden" id="HtmlAttributes[0]_Value" name="HtmlAttributes[0].Value" value="center" />
但是在回调时 DefaultModelBinder 将值创建为字符串数组,这样下次我呈现我的 html 值时;
_attribute.Value.ToString()
我得到以下 HTML;
<td align="System.String[]"></td>
这显然是字符串数组的默认 ToString 表示。价值是第一要素!!
似乎默认模型绑定器对声明为字典对象的值类型参数感到困惑。Dictionary<string,object>
正如我在 Html Helpers 源代码中观察到的那样,我确信我通过将 htmlAttributes 声明为 来遵循约定 。我在这里遗漏了一些明显的东西吗?
编辑:
只是更新以提供更多信息。我看到的绑定问题是 JQuery AJAX 后$.post
回调的结果,其中数据正在使用 JQuery 的 .serialize(); 进行序列化;在检查正在发送的数据时,一切看起来都井井有条。
HtmlAttributes%5B0%5D.Key=align&HtmlAttributes%5B0%5D.Value=center& ...