0

アクションに整数値の配列を提供したいと思います(フォームで選択したチェックボックス値に基づく)。次のようにAjax.ActionLinkを使用しようとしています...

    <%= Ajax.ActionLink("Submit", "PrintPinLetters", "EPOC", new { selectedItemsToPrint }, new AjaxOptions { HttpMethod="POST", UpdateTargetId = "PrintConfirmation", LoadingElementId = "resultLoadingDiv", OnFailure="handleError"}, new { id = "btnPrintPinLetter" }) %>                            

しかし、routeValueセクションに何を渡すかはわかりません。コントローラでの私のアクションは次のように定義されています...

    [HttpPost]
    public ActionResult PrintPinLetters(Int64[] selectedItemsToPrint)
    {                           

基本的に、「selectedItemsToPrint」で配列(またはID値のコンマ区切りリスト)を渡すことを検討しています。このリストは、テーブルの複数の行にあるチェックボックス(すべて同じ名前)で定義された値を使用して作成されます。

私はAjax.BeginFormを使用しましたが、これによりネストされたフォームが生成されるため、古いブラウザー(IE 7および8)を使用すると予測できない結果が生じていました。

4

1 に答える 1

0

通常、私はjQuery呼び出しを使用して自分でajaxを実行します。このように設定します

  1. Ajax.ActionLink()を使用する代わりに、Html.ActionLink(.... {id = "myid"})を使用します。リンクにIDを付けることを忘れないでください
  2. オンレディ関数を作成する

    $(document).ready(function () {
        $('#myid').click(function() {
            var allElements = $('#container').find('input').serialize();  
            $.post(action, allElements, function (data) {
                // add your code here to process the data returned from the post.
            });
    
            return false;  // dont post the form
        });
    });
    
  3. バインディングがactionresultで正しく機能するように、すべての入力要素のname属性をselectedItemsToPrintに設定することを忘れないでください

HTMLは次のようになります

<div id="container">
    <input type="checkbox" name="selectedItemsToPrint" value="somevalue0" />
    <input type="checkbox" name="selectedItemsToPrint" value="somevalue1" />
    <input type="checkbox" name="selectedItemsToPrint" value="somevalue2" />
    <input type="checkbox" name="selectedItemsToPrint" value="somevalue3" />
    <input type="checkbox" name="selectedItemsToPrint" value="somevalue4" />
    <input type="checkbox" name="selectedItemsToPrint" value="somevalue5" />
</div>
于 2012-05-03T11:04:12.317 に答える