在ASP.NET中将数组从Javascript传递到Controller

eufgjt7s  于 2023-05-05  发布在  Java
关注(0)|答案(1)|浏览(148)

我有复选框,当它们被选中并单击按钮时,调用一个JavaScript函数,我将所选项目的值发送到该函数。我想知道我应该在JavaScript函数中更改什么,以将值发送到www.example.com mvc中的控制器asp.net。
按钮

<input type="button" value="Submit" onclick="getChecked()">

复选框

@foreach (var item in Model.Attachments)
{                
    <input class="form-check-input" type="checkbox" name="item" value="@item.Id" >
}

JavaScript函数(在这里我需要帮助发送数组到控制器?)

function getChecked() {
 
 var arr = [];

 checked_items = ''
 var items = document.getElementsByName("item")
 for (i = 0; i < items.length; i++) {
       if (items[i].checked)
        arr.push(item[i]);
        }
        alert('JAVASCRIPT : Checked items are : ' + arr);

    }

控制器

[HttpPost]
 public ActionResult Selected(Guid[] item)
 {
    return View(item);
 }
cotxawn7

cotxawn71#

从我对你的问题的理解来看,解决这个问题的一个可能的解决方案是使用 AJAX 调用将数组传递给控制器,如下所示:

function getChecked() {
    var arr = [];
    var items = document.getElementsByName("item");
    for (i = 0; i < items.length; i++) {
        if (items[i].checked) {
            arr.push(items[i].value);
        }
    }
    debugger;
    alert('JAVASCRIPT : Checked items are : ' + arr);

    var xhr = new XMLHttpRequest();
    xhr.open('POST', '/Controller/Selected', true);
    xhr.setRequestHeader('Content-Type', 'application/json');
    xhr.onreadystatechange = function () {
        if (xhr.readyState === 4 && xhr.status === 200) {
            // Handle the response from the server if needed
            console.log(xhr.responseText);
        }
    };
    xhr.send(JSON.stringify(arr));
}

如果你使用jquery,你不必初始化xmlHttpRequest(),你可以简单地这样做:

$.ajax({
        url: '/Controller/Selected',
        type: 'POST',
        contentType: 'application/json',
        data: JSON.stringify(arr),
        success: function(response) {
            // Handle the response from the server if needed
            console.log(response);
        }
    });

希望这能帮上忙。

相关问题