我有一个文本框和一个Select Options Multiple,我在viewModel中使用敲除selectedOptions存储所有选定项。

如果我尝试使用ajax将捕获的信息传递给我的Controller,则无法接收MetricsChosenModel。

            var MetricsChosenModel= window.vm.MetricsChosenModel();
            var ApplicationsNameValue = $.trim($("#add-Applications").val());
            if (ApplicationsNameValue.length <= 0) {
                $("#text-add-Applications").popover('show');
            }
                $.ajax({
                    url: '/Admin/AddApplications',
                    type: "POST",
                    dataType: "JSON",
                    data: { ApplicationsName: ApplicationsNameValue, MetricsChosenModel: MetricsChosenModel },
                    success: function (returndata) {
                        if (returndata == true) {
                        }
                        else {

                        }
                    },
                    error: function () {
                    }
                });


我的控制器

    public ActionResult AddApplications(string ApplicationsName,List<string> MetricsChosenModel)
    {

        //Code here
        return View();
    }


我的MetricsChosenModel以以下格式存储数据
MetricsChosenModel [0] => 5
MetricsChosenModel [1] => 6

为什么我不能接收MetricsChosenModel的列表值,但是我却可以接收ApplicationsName,

如果有人可以解释,我在这里怎么错,那也很好。

谢谢,

最佳答案

不知道您的路由是什么样子,很难确定问题的确切根源。如果我不得不猜测,我想说的是您通过URL(路由或querystring参数)获得了ApplicationsName值。如果是这种情况,您可以将[FromBody]属性添加到MetricsChosenModel。但是请注意,每个方法签名只允许一个FromBodyAttribute。如果需要更多变量,则此问题的简单解决方案是创建一个模型,其中包含要在控制器操作中接收的每个属性。

希望有帮助!

09-20 20:44