无法将ajax JSON绑定到复杂对象

时间:2017-03-16 07:16:19

标签: jquery json ajax asp.net-mvc

我查看了几个关于如何将JSON数据绑定到复杂对象的示例,但是我的一些问题。

首先,以下是相关功能:

function populateEligibilityDropdown() {
    var selectedMember = $("#SelectedMember_Value").val();
    var selectedMemberName = $("#SelectedMember_Value option:selected").text();

    var memberData = { "Name" : selectedMemberName };

    if (!fieldIsEmpty(selectedMember)) {
        hide(".selectPathSection, .allSectionsContainer, #reviewSubmissionBtn");
        showSpinner();

        var errorFunc = function (data) {
            processAjaxRequestError(data, "#SelectedMember_Value");
        };

        makeAjaxRequest(
            $("#GetAwardElegibiltyUrl").val(),
            "POST",
            JSON.stringify(AddAntiForgeryToken(memberData)),
            processGetAwardEligibilitySuccess,
            errorFunc,
            removeSpinner
        );
    }
}

function makeAjaxRequest(url, method, data, successFunction, errorFunction, alwaysFunction, promiseFunction) {
    $.ajax({
        "url": url,
        "type": method,
        "data": data,
        "contentType": 'application/json; charset=utf-8',
        "success": successFunction,
        "error": errorFunction
    }).always(alwaysFunction).then(promiseFunction);
}

AddAntiForgeryToken = function (data) {
    data.__RequestVerificationToken = $('input[name=__RequestVerificationToken]').val();
    return data;
};
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult GetAwardElegibilty(MemberIdentification member)
{ ... }

成员对象的类型为string NameMemberID Id。 Id有一个名为Value的子域,应该设置。

我尝试了几种不同的方式:

1)工作解决方案是将POST操作分离为GetAwardEligibility(MemberID id, string name),并与ValidatingAntiForgeryToken一起正确绑定。

2)JSON.stringify如上所示并添加contentType不起作用,因为AntiForgeryToken没有被选中。它甚至没有击中行动。

3)如果我只是使用与2)相同的设置删除AntiForgeryToken,即使最简单的只填充名称,我也看不到任何绑定。

这是如何设置MemberIdentification类的问题吗?

0 个答案:

没有答案