オブジェクトのリスト用のエディター テンプレートがあります。これにより、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 文字列になります。
これはすべて正しく機能します。
フォームが送信されると、入力から文字列を変換しようとします。リストに入れられ、失敗します。文字列を「地域」エラーに変換できません。