сложный обьект после отправки ajax post имеет поле null
хочу сделать сортировку объектов на странице с помощью ajax.
ОТВЕТ: в комментариях к вопросу Alexander Petrov дал ответ.
При попытке отправить объект:
public class SortBmViewModel
{
public Folder Folder { get; set; } //class
public SortType SortType { get; set; } //enum
}
обьект Folder:
public class Folder
{
public long Id { get; set; }
public string Name { get; set; }
public long UserId { get; set; }
public List<BookMark> BookMarks { get; set; }
}
поле Folder получает значение null, но во время передачи оно точно не является таковым.
код представления:
@model SortBmViewModel
<div>
<form id="SortForm" onsubmit="return false;">
<input asp-for="Folder" hidden="hidden" />
<div>
<div>
<input asp-for="SortType" value="@SortType.SortByDataCreate" hidden="hidden" />
<button onclick="SortBy()">Data Create</button>
</div>
<div>
<input asp-for="SortType" value="@SortType.SortByName" hidden="hidden" />
<button onclick="SortBy()">Name</button>
</div>
<div>
<input asp-for="SortType" value="@SortType.SortByUrl" hidden="hidden" />
<button onclick="SortBy()">Url(https://www.some.com)</button>
</div>
</div>
</form>
</div>
<script>
function SortBy() {
var data = $('#SortForm').serialize();
$.ajax({
type: 'POST',
url: '@Url.Action("SortBookmarks", "Profile")',
data: JSON.parse(JSON.stringify(data)),
success: function (response){
$("#content").html(response);
},
error: function (response) {
alert(response.responseText);
}
});
}
</script>
данное представление является частичным в него передаётся объект:
<div class="vertical-menu">
@await Html.PartialAsync("_MenuSortPartial", new SortBmViewModel() { Folder = Model })
</div>
код метода действия:
[HttpPost]
public IActionResult SortBookmarks(SortBmViewModel sortmodel)
{
switch (sortmodel.SortType)
{
case SortType.SortByDataCreate:
sortmodel.Folder.BookMarks.OrderBy(b => b.DateСreation);
break;
case SortType.SortByName:
sortmodel.Folder.BookMarks.OrderBy(b => b.Name);
break;
case SortType.SortByUrl:
sortmodel.Folder.BookMarks.OrderBy(b => b.Url);
break;
}
return RedirectToAction("_ShowFolderPatrial", sortmodel.Folder);
}
P.s. Скорей всего я просто не понимаю как правильно сериализировать сложный объект(ибо когда пробовал отправлять простые типы данной проблемы не было), но как правильно это сделать не знаю.


