I work on asp.net core razor page . i face issue i can't pass selected ids and selected text from checkboxes from action
so how to pass classIds from action OnGetSubAccountClassName to action post OnPostGenerateCount using hidden field
when change event fire by jQuery
public JsonResult OnGetAccountClassName()
{
var assetsAccountName = _IAssetsService.GetJdeAssetAccountClassName();
AssetCountGeneration.JDEAssetAccountClassNameDetails = assetsAccountName;
return new JsonResult(assetsAccountName);
}
public JsonResult OnGetSubAccountClassName(string[] classIds,string [] classIdsValues)
{
var assetsSubAccountName = _IAssetsService.GetJdeAssetSubAccountClassName(classIds);
AssetCountGeneration.JDEAssetSubAccountClassNameDetails = assetsSubAccountName;
return new JsonResult(assetsSubAccountName);
}
public JsonResult OnPostGenerateCount(AssetCountGeneration AssetCount)
{
}
i fill list when click button as below
$('#btnDisplay').click(function (event) {
event.preventDefault();
dropdown.empty();
$.ajax({
url: '?handler=AccountClassName',
type: "GET",
dataType: "json",
success: function (response) {
$('#classesContainer').show();
$('#classesList').html(''); // Clear existing classes
$('#classesList').append('<input type="checkbox" class="classCheckbox" value="0" /> All <br />');
$.each(response, function (i, classes) {
$('#classesList').append('<input type="checkbox" class="classCheckbox" value="' + classes.classAccountId + '" /> ' + classes.classAccountName + '<br />');
});
}
});
});
and when i make change selection on menu class
$(document).on('change', '.classCheckbox', function () {
var selectedClassIds = [];
var selectedClassIdsValues = []; // Array to store selected values
$('.classCheckbox:checked').each(function () {
selectedClassIds.push($(this).val());
selectedClassIdsValues.push($(this).next('span').text());
});
console.log("selected vvvvvv" + selectedClassIdsValues)
if (selectedClassIds.length > 0) {
$.ajax({
url: '?handler=CheckedAccountClassName',
type: 'GET',
traditional: true,
data: { classIds: selectedClassIds, classIdsValues: selectedClassIdsValues },
success: function (response) {
$('#subClassesList').empty();
$('#subClassesContainer').show();
// console.log("value selected is" + $('#dataList').val())
var subClassesContainer = $('<div data-class-id="' + selectedClassIds + '"></div>');
$.each(response, function (i, item) {
$(subClassesContainer).append('<input type="checkbox" class="subclassCheckbox" name="selectedSubClasses" value="' + item.subClassAccountId + '" /> ' + item.subClassAccountName + '<br />');
});
$('#subClassesList').append(subClassesContainer);
}
});
and classes used to checkbox list on csharp as below
public class AssetCountGeneration
{
public List<JDEAssetAccountClassName> JDEAssetAccountClassNameDetails { get; set; }
}
public class JDEAssetAccountClassName
{
public string ClassAccountId { get; set; }
public string ClassAccountName { get; set; }
public bool ClassCheck { get; set; }
}
and for html code as below
<form id="FrmAssetcountGeneration" method="post">
<table style="border:1px solid black">
<tr>
<td style="width:300px;height:200px;border:1px solid black">
<div id="classesContainer" >
<h2>Classes</h2>
<div id="classesList" class="scrollable-list" style="padding-left:5px;padding-top:5px; margin-top:10px;margin-left:10px;width:300px;height:200px;border:1px solid black;">
</div>
</div>
</td>
<td style="width:300px;height:200px;border:1px solid black">
<div id="subClassesContainer" style="margin-left:15px;">
<h2>Subclasses</h2>
<div id="subClassesList" class="scrollable-list" style="padding-left:5px;padding-top:5px; margin-top:10px;margin-left:10px;width:300px;height:200px;border:1px solid black;">
</div>
</div>
</td>
</table>
<button type="button" id="btnGenerate" name="btnGenerate" style="width: 113px;margin-left:5px;">Generate</button>
</form>
$('#btnGenerate').click(function (event) {
event.preventDefault();
var formData = $('#FrmAssetcountGeneration').serialize();
console.log("form data values" + formData)
var jdeAssetAccountClassNameDetailsJson = JSON.stringify(@Html.Raw(Json.Serialize(Model.AssetCountGeneration.JDEAssetAccountClassNameDetails)));
$.ajax({
url: '?handler=GenerateCount',
type: "POST",
// dataType: "json",
beforeSend: function (xhr) {
xhr.setRequestHeader("XSRF-TOKEN",
$('input:hidden[name="__RequestVerificationToken"]').val());
},
data: $('#FrmAssetcountGeneration').serialize(),
success: function (response) {
},
error: function (xhr, status, error) {
console.log(error);
}
});
});