0

オブジェクトのリスト用のエディター テンプレートがあります。これにより、JQuery トークン入力が強化されます。そのため、エディター テンプレートは、JQuery プラグインによって読み込まれる Javascript 配列を作成します。

そのフォームを再度送信すると、POST データがカンマ区切りの文字列として表示されます。したがって、バインドせず、キャストできない例外をスローします。

このようなシナリオでデータをコントローラーに戻し、有効な ViewModel を取得するためのベスト プラクティスは何ですか?

エディタ テンプレート

@model List<SEISMatch.DAL.Entities.Region>

    <script type="text/javascript">
        var existingRegions = [
            @if(Model!=null){
                foreach(var region in Model){
                    if(region!=null){
                        @:{ id: @region.Id, name: "@region.Title" },
                    }
                }
            }
        ];
    </script>

    <input type="text" id="regionselector" name="@ViewData.TemplateInfo.GetFullHtmlFieldName("")">

その「regionselector」入力を AJAX を利用したトークン提案入力に変換するhttp://loopj.com/jquery-tokeninput/があります。その入力の値は、地域 ID の CSV 文字列になります。

これはすべて正しく機能します。

フォームが送信されると、入力から文字列を変換しようとします。リストに入れられ、失敗します。文字列を「地域」エラーに変換できません。

4

1 に答える 1

0

私自身のモデルバインダーを作成しましたが、プロパティレベルでした。このSOの回答に続いて: https://stackoverflow.com/a/12683210/1321662

于 2013-07-09T20:10:47.170 に答える