Hier ist der JavaScript-Code verwende ich das Array erstellen und es auf seine Art und Weise senden:Wie kann ich ein einfaches Javascript-Array an eine MVC3-Controller-Aktionsmethode binden?
<script type="text/javascript" language="javascript">
$(document).ready(function() {
$("#update-cart-btn").click(function() {
var items = [];
$(".item").each(function() {
var productKey = $(this).find("input[name='item.ProductId']").val();
var productQuantity = $(this).find("input[type='text']").val();
items[productKey] = productQuantity;
});
$.ajax({
type: "POST",
url: "@Url.Action("UpdateCart", "Cart")",
data: items,
success: function() {
alert("Successfully updated your cart!");
}
});
});
});
</script>
Das items
Objekt mit den Werten richtig aufgebaut ist, was ich brauche.
Welchen Datentyp muss mein Objekt im Backend meines Controllers haben?
Ich habe dies versucht, aber die Variable bleibt null und ist nicht gebunden.
[Authorize]
[HttpPost]
public ActionResult UpdateCart(object[] items) // items remains null.
{
// Some magic here.
return RedirectToAction("Index");
}
Sind Sie sicher, dass Sie ein ',' zwischen dem Schlüssel beim Aufruf von 'push' brauchen? Ich bekomme dort einen Parserfehler. –
@SergioTapia ja, du bist da war ein Tippfehler. Siehe meine aktualisierte Antwort. – nemesv
Elemente sind immer noch nicht gebunden, wenn sie das Backend erreichen. Irgendwelche Ideen? Ich erinnerte mich daran, 'contentType: 'application/json'' hinzuzufügen. –