将ajax请求中的多个参数传递给函数后面的C#代码

问题描述

我无法将多个参数从我的ajax函数传递到C#函数。当我在ajax函数中仅传递1个参数(vthaForm)时,它将正确发送到OnPostApprove方法,并填写了vthaForm中的所有属性。但是,当我尝试在ajax函数的数据中包含comment参数时,到达OnPostApprove方法的vthaForm和comment变量都没有使用适当的值初始化。

我尝试了与其他帖子不同的几种解决方案,但是没有任何运气。

如果有人能指出我正确的方向,将不胜感激。

//This is my C# code on the codebehind page Approver.cshtml.cs
public IActionResult OnPostApprove([FromBody]VthaForms vthaForm,[FromBody]string comment){;}


//This function is my Approver.cshtml razor page
//vthaform = JSON object,handler ="Approve",_comment is a string

function approveform(vthaform,handler,_comment) { 
        var package = {
            vthaForm: vthaform,comment: _comment
        };

        $.ajax({
            type: "POST",url: 'Approver/?handler=' + handler,data: JSON.stringify(package),beforeSend: function (xhr) {
                xhr.setRequestHeader("XSRF-TOKEN",$('input:hidden[name="__RequestVerificationToken"]').val());
            },contentType: "application/json; charset=utf-8",dataType: "json"
        }).done(function (data) {
            console.log(data.name);
            alert("Succesfully approved " + data.name +"'s VTHA with id: " + data.id + "." )
        });
    }

解决方法

简短的故事是,您不能像这样绑定多个参数,它必须是一个对象。

通读此书,看看它是否能回答您的问题。

WebAPI Multiple Put/Post parameters