Javascript 通过AJAX将单个列表项从视图发送到控制器

Javascript 通过AJAX将单个列表项从视图发送到控制器,javascript,jquery,ajax,asp.net-mvc,Javascript,Jquery,Ajax,Asp.net Mvc,我有一个由用户列表组成的视图: @model List<LabelPrinting.Models.UserModel> 然后,我加载一个jQuery,其中包含每个jQuery的值。然后,我选择打印列表中特定用户的avery标签,并设置一个值。我正在尝试仅将该特定用户发送到控制器,并获取以下用户属性的空值: function PrintAveryLabel(but) { var id = but.id.substring(9); var $rad = $(but)

我有一个由用户列表组成的视图:

 @model List<LabelPrinting.Models.UserModel>
然后,我加载一个jQuery,其中包含每个jQuery的值。然后,我选择打印列表中特定用户的avery标签,并设置一个值。我正在尝试仅将该特定用户发送到控制器,并获取以下用户属性的空值:

 function PrintAveryLabel(but) {
    var id = but.id.substring(9);
    var $rad = $(but).closest('tr').siblings().find('.radLabelOther');
    if (($rad).is(':checked')) {
        var $txtr = $rad.closest('tr').siblings().find('.classRows');
        var $txtc = $rad.closest('tr').siblings().find('.classCols');
        if ($txtr.val() === "0" || $txtc.val() === "0") {
            $("#lblError").text("You have have not selected the rows and columns for the labels.");
            $("#MessageDialog").dialog({ title: "Select Rows/Columns" });
            $("#MessageDialog").dialog("open");
            return false;
        }
    }
    var data = findUser(id);
    $.ajax({
        type: 'POST',
        data: { pat: data },
        url: '@Url.Action("PrintUserLabels")'
    });
}
findUser函数只选择列表中与ID匹配的条目

 function findUser(id) {
    var data;
    for (i = 0; i < cnt; i++) {
        if (users[i].UserId === parseInt(id)) {
            data = users[i];
            break;
        }
    }
    return data;
}

label操作已尝试并为true,但我得到一个空用户模型。我做错了什么?

findUser(id)返回了哪些数据?把它加到你的question@DLeh-添加了该函数,尽管它所做的只是在数组中查找用户并返回它。然后显示用户的类型,您实际尝试发送的数据是什么样的?因为这就是问题所在,我们的模型是一个集合。检查
users
的值,您将看到名称具有索引器。您不能将索引对象回发到只需要一个对象的方法。@StephenMuecke-如果我将整个表单发布到一个操作中,该操作是用户模型的整个列表,那么我必须遍历每个表单才能找到要打印的对象。这是可行的,但当我只需要一个列表时,却发布整个列表似乎很愚蠢。我试着在页面初始化时收集一个模型,它包含每个用户的所有值。
 function findUser(id) {
    var data;
    for (i = 0; i < cnt; i++) {
        if (users[i].UserId === parseInt(id)) {
            data = users[i];
            break;
        }
    }
    return data;
}
 [HttpPost]
    public ActionResult PrintUserLabels(UserModel pat)
    {
        string retval = "";
        if (pat.PrintLabel)
        {
            return RedirectToAction("Label", new { user = pat });
        }
        else
        {
            retval = "ERROR - you must make a selection";
            Exception e = new Exception(retval);
            HandleErrorInfo info = new HandleErrorInfo(e, "DYMO", "PrintPatientLabels");
            return RedirectToAction("Error", info);
        }
    }