Senden Sie den Wert von paar Checkboxen zur Steuerung von jQuery.post () - Methode
Ich habe eine Tabelle aus der db alle Infrastrukturen (name, Beschreibung, Leistung). Die Letzte Spalte dieser Tabelle aktivieren. Nach der Auswahl ein paar Checkboxen, ich möchte eine Schaltfläche, die das löschen aller ausgewählten Infrastrukturen. Hier haben Sie den code der Tabelle.
<table>
<tr>
<th>
Nazwa //name
</th>
<th>
Opis //description
</th>
<th>
Wydajność //performance
</th>
<th>
zaznacz //select
</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Nazwa)
</td>
<td>
@Html.DisplayFor(modelItem => item.Opis)
</td>
<td style="text-align: center">
@Html.DisplayFor(modelItem => item.Wydajnosc) j
</td>
<td style="padding-left: 2%; padding-right: 2%;">
<input type='checkbox' id='myCheckbox' name='Infrastuktura[@item.InfrastrukturaID].myCheckbox' value='@item.InfrastrukturaID' />
</td>
</tr>
}
Ich weiß, dass ich brauchen, um einige variable, die speichert alle Wert von Checkboxen. Sowas hatte ich auch: ( aber es Tat nicht gut funktionieren )
var checked = $('input[type="checkbox"]#myCheckbox').attr('checked');
Und dann muss ich senden Sie diese Daten mit dem zum Beispiel jQuery.post() ), habe ich ein paar Funktionen, die die post verschicken mit Daten, aber keine davon funktioniert richtig. Unten habe ich eine dieser Funktionen:
$('#submitButton').click(function () {
if (checked) {
$.ajax({
type: 'POST',
url: '/Home/InfrastrukturaDelete',
data: 'id: ' +checked,
contentType: 'json',
dataType: 'json'
});
}
else {
alert("ble");
}
});
Hier ist meine Methode im HomeController:
[HttpPost]
public ActionResult InfrastrukturaDelete(int[] myCheckbox)
{
foreach (int item in myCheckbox)
{
Infrastruktury infrastruktura = naukaRepository.GetInfrastruktura(item);
naukaRepository.DeleteInfrastruktura(infrastruktura);
naukaRepository.Save();
}
return RedirectToAction("InfrastrukturyView");
}
Ich bekomme immer Fehler 500 oder Ressource interpretiert als Andere, aber übertragen mit MIME-type nicht definiert. Auch wenn Sie können, zeigen Sie mir, wie controller Aussehen sollte, um dies zu umgehen ajax-Funktion. Ich werde dankbar sein für jede Hilfe.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mein td mit checkbox sieht so aus:
Mein script mit post:
Dritte argument in $.post() ist eine Funktion, die dynamisch löschen tr, enthält, die überprüft Checkboxen. Meine Aktion in controller sieht so aus:
Ich bin mir nicht sicher, ob ich deine Frage verstanden. Ich denke, Sie sind auf der Suche nach einem Weg, um die post-ID ' s von den aufgegebenen Infrastrukturen.
In diesem Fall das ist, was ich tun würde:
ändern Sie den Namen des input-checkboxs zu einem nicht Variablen Wert (ex. "Infrastuktura[@item.InfrastrukturaID].myCheckbox" wird "InfrastukturaID")
Mithilfe von jquery post-Methode post die Daten als Formulardaten zurück an die url.
Diese nicht veröffentlichen Ihre Daten als json-Daten (du hast nicht erwähnt, dass als Voraussetzung). Stattdessen erhalten Sie eine Abfrage-string geschrieben die url. Sehen Sie mehr über .serialize() an http://api.jquery.com/serialize/
Einen einheitlichen Namen für alle Checkboxen, die Abfrage-string geschrieben wird in etwa so Aussehen:
Dieser sollte dann nicht allzu schwer sein, eine Schleife durch server-Seite zum durchführen der löscht.
Server-Seite würde ich die Schleife auszuführen, wie hier (sorry, dass ich vb-code nicht in c#, aber Sie sollten in der Lage sein zu übersetzen):
Benutzte ich string in der Schleife anstelle von int, da müssen Sie sicherstellen, dass Sie werfen kann, um int erste. Nicht Vertrauen können der Daten wird immer das sein, was Sie beabsichtigen, es zu.
Versuchen zu serialisieren Sie die Daten mit
traditional: true
Dieser in mvc3-ajax-post-mutliple-checkbox-Werte-zu-controller ,könnte Es hilfreich sein, Sie...
Hier einige Informationen über die array-Serialisierung.
Nicht mit
contentType: "application/json; charset=utf-8"
Arbeit?