2011-05-13 12 views
1

jquery + jsonを使用して、私のコントローラからビューモデルの配列を取得しています。次に、テーブルの各行が1つのビューモデルを表すフォームを作成します。jsonからフォームを作成する

私の質問は:

public ActionResult Update(MyViewModel[] models) 
{ 
} 

編集:私はフォームを生成するためにjqueryの-TMPLを使用している、と私はこのような私のコントローラのアクションにそれを得ることができるように、私は、各フォーム要素に名前を付ける必要がありますどのようにまた、(フォーム生成に必要な場合は)インデックス変数を取得する方法を理解しようとしています。

答えて

0

私はそれを稼働させることができました。

私のjQueryのテンプレート:テンプレートをロード

<script id="wagonTemplate" type="text/x-jquery-tmpl"> 
    <tr> 
     <td> 
      <input type="checkbox" value="true" class="wagoncheck" name="wagons[${$item.getIndex()}].IsSelected" /> 
     </td> 
     <td> 
      <input type="text" name="wagons[${$item.getIndex()}].WagonId" value="${WagonId}" style="width:120px" /> 
     </td> 
     <td> 
      <input type="text" name="wagons[${$item.getIndex()}].WagonNumber" value="${WagonNumber}" style="width:20px" /> 
     </td> 
</script> 

は方法:つまり

function loadWagons(trainId, partId) { 
    $.getJSON('/train/wagons/' + escape(trainId) + '?partNo=' + partId, function (data) { 
     $wagons = $('#wagons tbody'); 
     $wagons.empty(); 

     // the function used in the template to get an index. 
     var tmplOptions = { 
      getIndex: function getIndex() { 
       return $.inArray(this.data, data); 
      } 
     }; 
     $("#wagonTemplate").tmpl(data, tmplOptions).appendTo($wagons); 
    }); 
} 

あなたが名前を付ける必要がある、あなたのコントローラのアクションでYourModel[] items引数を取得するにはitems[0].MyProperty' where 0 'という項目は配列内のインデックスに対応する必要があります。

jqueryテンプレートでインデックスを取得するには、テンプレート関数のオプションでメソッドを渡すだけです。私は答えの少し修正されたバージョンhereを使用しています。その答えで行われたようにアイテムを渡すことは、現在のアイテム上にthisポイントとして必要ではありません。

関連する問題