我查看了几个关于如何将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 Name
和MemberID Id
。 Id有一个名为Value
的子域,应该设置。
我尝试了几种不同的方式:
1)工作解决方案是将POST操作分离为GetAwardEligibility(MemberID id, string name)
,并与ValidatingAntiForgeryToken一起正确绑定。
2)JSON.stringify
如上所示并添加contentType
不起作用,因为AntiForgeryToken没有被选中。它甚至没有击中行动。
3)如果我只是使用与2)相同的设置删除AntiForgeryToken,即使最简单的只填充名称,我也看不到任何绑定。
这是如何设置MemberIdentification类的问题吗?