Цель в том, чтобы инфраструктура MVC распознала и заполнила поле в моем действии, которое является объектом FormCollection. Я смогу заставить его работать, если сам обработаю всю сериализацию, но пока не буду играть в кости, если оставлю это jquery / javascript.
Вопрос : Что вызывает сериализацию следующего массива, как будто он не содержит данных?
Я проверил переменную, и она содержит один элемент, как и ожидалось (установлен в другом месте кода).
var formVars = new Array();
for (var item in gd["FormVariables"])
{
if (gd["FormVariables"][item] != null)
{
formVars[item.toString()] = gd["FormVariables"][item];
}
}
var args = {
Req: {
SelectedColId: gd["SelectedColId"],
CurrentPage: gd["CurrentPage"],
PageSize: gd["PageSize"],
RecordCount: gd["RecordCount"],
NumberOfPages: numOfPages,
MultipleSelection: gd["MultipleSelection"],
FormVariables: formVars
}
};
Проблема с этим заключается в поведении массива ... если я сделаю alert(formVars);
, он будет пустым, даже если он содержит все пары ключ / значение. Аналогично, параметр FormVariables становится пустым после того, как JSON.stringify()
выполнит свою работу.
$.ajax(
{
traditional: true,
type: 'POST',
contentType: 'application/json',
dataType: 'json',
url: gd["Route"],
data: JSON.stringify(args),
success: function (data, textStatus, jqXHR)
{
},
error: function (jq, status, err)
{
alert(status);
}
});
}
сериализованный выход:
'{"Req":
{
"SelectedColId":"",
"CurrentPage":1,
"PageSize":15,
"RecordCount":0,
"NumberOfPages":2,
"MultipleSelection":false,
"FormVariables":[]
}
}'
что здесь происходит не так?
РЕДАКТИРОВАТЬ: содержание БД
{
Height: 300,
FetchType: 1,
Route: '../GetTrainingDocuments/',
SelectedColId: '',
PageSize: 15,
CurrentPage: 1,
RecordCount: 0,
HasMoreRecords: true,
NumberOfPages: 1,
MultipleSelection: false,
FormVariables: function()
{
if (this.array == 'undefined')
{
this.array = [];
}
return this.array;
}
}
Модель, к которой следует привязаться:
public ActionResult GetTrainingDocuments(GridRequest req)
{
//...
}
public class GridRequest
{
public string SelectedColId { get; set; }
public int CurrentPage { get; set; }
public int PageSize { get; set; }
public int RecordCount { get; set; }
public int NumberOfPages { get; set; }
public string Widths { get; set; }
public bool MultipleSelection { get; set; }
public FormCollection FormVariables { get; set; }
public GridRequest()
{
}
}