मेरे लिए, जेरेमी के समाधान ज्यादातर काम किया, लेकिन मैं बदलने के लिए किया था .attr के साथ .prop। अन्यथा एक बार मैं एक चेकबॉक्स पर क्लिक किया ही यह "मास्टर" चेकबॉक्स पर प्रतिक्रिया बंद कर देंगे।
_Layout.cshtml (मास्टर पृष्ठ) में
$(document).ready(
manageCheckboxGroup('chkAffectCheckboxGroup', 'checkbox-group')
);
संदर्भित .js में
function manageCheckboxGroup(masterCheckboxId, slaveCheckboxesClass) {
$("#" + masterCheckboxId).click(function () {
$("." + slaveCheckboxesClass).prop('checked', this.checked);
});
$("." + slaveCheckboxesClass).click(function () {
if (!this.checked) {
$("#" + masterCheckboxId).prop('checked', false);
}
else if ($("." + slaveCheckboxesClass).length == $("." + slaveCheckboxesClass + ":checked").length) {
$("#" + masterCheckboxId).prop('checked', true);
}
});
}
एचटीएमएल (उस्तरा) पेज में
<table class="table">
<thead>
<tr>
<th><input id="chkAffectCheckboxGroup" type="checkbox" checked="checked" /></th>
<th>
@Html.DisplayNameFor(model => model.Clients[0].ClientId)
</th>
<th>
@Html.DisplayNameFor(model => model.Clients[0].Name)
</th>
</tr>
</thead>
<tbody>
@for (int i = 0; i < Model.Clients.Count(); i++)
{
<tr>
<td>
<input type="hidden" asp-for="Clients[i].Id" class="form-control" />
<input type="hidden" asp-for="Clients[i].Name" />
<input type="checkbox" class="checkbox-group" asp-for="Clients[i].Selected" />
</td>
<td>
@Html.DisplayFor(modelItem => Model.Clients[i].Id)
</td>
<td>
@Html.DisplayFor(modelItem => Model.Clients[i].Name)
</td>
</tr>
}
</tbody>
</table>
महत्वपूर्ण:
भी, पहली बार में मैं एक था @foreachHTML में पाश और यह काम नहीं किया ..., आप एक का उपयोग करना चाहिए @for (int i = 0; i < Model.Clients.Count(); i++)बजाय अन्यथा आप में एक रिक्त सूची से अंत पाश OnPostAsync()।