0

我想为我的 Action 提供一个整数值数组(基于表单上选定的复选框值)。我正在尝试按如下方式使用 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. 创建一个onready函数

    $(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. 不要忘记将所有输入元素的 name 属性设置为 selectedItemsToPrint 以便绑定与您的 actionresult 一起正常工作

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 回答