私が書いている 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 ヘルパーのソース コードで確認したように、htmlAttributes を として宣言することで、規則に従っていると確信してい ました。ここで明らかな何かが欠けていますか?
編集:
より多くの情報を提供するための更新です。私が見ているバインディングの問題は$.post
、データが JQuery の .serialize(); を使用してシリアル化されている JQuery AJAX ポスト コールバックの結果です。送信されたデータを検査すると、すべてが正常に見えます。
HtmlAttributes%5B0%5D.Key=align&HtmlAttributes%5B0%5D.Value=center& ...