Мне нужно получить коды муниципалитетов из скрытых входов, которые связаны с выбранным флажком. Как я могу получить значение из этих скрытых входных данных и создать массив строк и отправить эти значения в метод контроллера TAGetDistrictsByMunicipality? Метод TAGetDistrictsByMunicipality возвращает массив строк, который необходимо добавить в список выбора SelectedDistricts
после того, как муниципалитет выбран или не выбран.
Я пробовал $(this).parent().text().trim()
, но он получает текст метки, не значение кода ввода. Есть ли способ использовать JQuery, чтобы получить значение кода для каждого выбранного муниципалитета в округе, вместо того, чтобы пытаться добавлять каждый элемент по отдельности, когда они выбраны? Мне нужно добавить или удалить значения из массива в зависимости от того, установлен флажок или нет.
Просмотр - HTML
<div class="form-table form-table-inner" id="muniTable">
<div>
<label for="Municipalities_0__Selected">
<input type="checkbox" data-val="true" data-val-required="The Selected field is required." id="Municipalities_0__Selected" name="Municipalities[0].Selected" value="true">002 - TOWN OF TEST
</label>
<input type="hidden" data-val="true" data-val-required="The Text field is required." id="Municipalities_0__Text" name="Municipalities[0].Text" value="002 - TOWN OF TEST">
<input type="hidden" data-val="true" data-val-required="The Code field is required." id="Municipalities_0__Code" name="Municipalities[0].Code" value="002">
<input type="hidden" data-val="true" data-val-required="The ID field is required." id="Municipalities_0__ID" name="Municipalities[0].ID" value="1">
</div>
<div class="row">
<span class="col-2" style="padding-top: 6px;">
<input type="checkbox" data-val="true" data-val-required="The LimitToDistrict field is required." id="LimitToDistrict" name="LimitToDistrict" value="true">
<label><b>Limit to district</b></label>
</span>
<select disabled="" class="form-control col-3 d-inline-block input-validation-error" data-val="true" data-val-required="The SelectedDistrict field is required." id="SelectedDistrict" name="SelectedDistrict">
</select>
</div>
</div>
Просмотр - Javascript
var munis = new Array();
$("#muniTable :checkbox").change(function (e) {
if ($(this).is(":checked")) {
$.ajax({
type: 'POST',
data: { muniSelections: munis },
url: '@Url.Action("TAGetDistrictsByMunicipality", ViewContext.RouteData.Values["Controller"].ToString())',
success: function (data) {
//Display districts to dropdown list
for (var x; x < data.length(); x++) {
var item = $('<option></option>').attr({ value: data[x].text(), text = data[x].text() }).text();
$('#SelectedDistrict').append( item ); //Add option to select list
}
}
});
}
else {
$.ajax({
type: 'POST',
data: { muniSelections: munis },
url: '@Url.Action("TAGetDistrictsByMunicipality", ViewContext.RouteData.Values["Controller"].ToString())',
success: function (data) {
//Display districts to dropdown list, add options to the select list
for (var x = 0; x < data.length(); x++) {
var item = $('<option></option>').attr({ value: data[x].text(), text = data[x].text() }).text();
$('#SelectedDistrict').append( item ); //Add option to select list
}
}
});
}
});
Контроллер - Возвращает список строк
public JsonResult TAGetDistrictsByMunicipality(List<string> muniSelections)
{
SortingSpecification sortingSpec = new SortingSpecification();
ReportDataSortHelper.AddSortByDistrictStateCode(ref sortingSpec);
MunicipalityDistrictMapManager.GetMunicipalityDistrictMapsWithMatchingFields(
null,
out EntityCollection<MunicipalityDistrictMapEntity> districtEntities,
sortingSpec,
fillDistrictEntities : true
);
EntityCollection<DistrictEntity> districts = new EntityCollection<DistrictEntity>();
var MunicipalityEntities = new List<MunicipalityEntity>();
foreach (var muniCode in muniSelections) {
MunicipalityManager.GetMunicipalityByMunicipalityCode(muniCode, out MunicipalityEntity muni);
MunicipalityEntities.Add(muni);
}
foreach (MunicipalityEntity municipality in MunicipalityEntities) {
MunicipalityEntity mun = (MunicipalityEntity)municipality;
List<int> matches = districtEntities.FindMatches(MunicipalityDistrictMapFields.MunicipalityId == municipality.MunicipalityId);
foreach (int m in matches) {
if (municipality.MunicipalityDistrictMap[m].District.Type == DistrictEntity.Type_School
|| municipality.MunicipalityDistrictMap[m].District.Type == DistrictEntity.Type_Special){
List<int> dmatch = districts.FindMatches(DistrictFields.DistrictId == municipality.MunicipalityDistrictMap[m].DistrictId);
if (dmatch.Count == 0) {
districts.Add(districtEntities[m].District);
}
}
}
}
IOrderedEnumerable<DistrictEntity> sorted = districts.OrderBy(d => d.DistrictStateCodeString);
EntityCollection<DistrictEntity> sortedDistricts = new EntityCollection<DistrictEntity>();
sortedDistricts.AddRange(sorted);
List<string> districtCodeStrings = new List<string>();
foreach (var sortedDistrict in sortedDistricts) {
districtCodeStrings.Add(sortedDistrict.DistrictStateCodeDescriptionString);
}
return Json(new
{
districts = districtCodeStrings
});
}