liant modèle par défaut ne se lie pas ma classe de modèle
-
13-10-2019 - |
Question
Je suis en train de faire un post qui devrait utiliser le modèle par défaut fonctionnalité dans ASP.NET MVC Binder 2, mais malheureusement je ne peux pas passer ....
Lorsque je clique sur le bouton de commande I remplir un formulaire dinamically en utilisant le code jQuery et ensuite soumettre ce formulaire au serveur. Ceci est la forme qui se soumis
<form action="/x/Order/Checkout" id="cartForm" method="post">
<input name="__RequestVerificationToken" type="hidden" value="UDjN9RdWheKyWK5Q71MvXAbbDNel6buJd5Pamp/jx39InuyYIQVptcEubIA2W8DMUzWwnZjSGkLspkmDPbsIxy8EVuLvfCSZJJnl/NrooreouptwM/PaBEz2v6ZjO3I26IKRGZPqLxGGfITYqlf8Ow==">
<input id="CustomerID" name="CustomerID" type="hidden" value="1">
<input id="FirmID" name="FirmID" type="hidden" value="2">
<input type="hidden" name="CartItems[0].ServiceTypeID" value="1">
<input type="hidden" name="CartItems[0].Quantity" value="1">
<input type="hidden" name="CartItems[1].ServiceTypeID" value="2">
<input type="hidden" name="CartItems[1].Quantity" value="1">
</form>
Ceci est le code de jQuery qui manient la soumettre un événement pour la forme
$("#cartForm").submit(function (event) {
event.preventDefault();
var form = $("#cartForm");
var panel = form.parent();
panel.parent().block();
$.ajax({
type: "post",
dataType: "html",
url: '<%: Url.Content("~/Order/Checkout") %>',
async: false,
data: form.serialize(),
success: function (response, status, xml) {
panel.parent().unblock();
},
error: function (response) {
panel.parent().unblock();
}
});
});
Ceci est l'action du contrôleur qui devrait être obtenir appelé
[HttpPost]
[ValidateAntiForgeryToken]
public virtual ActionResult Checkout( CartModel cart ) {
}
Et enfin c'est la classe CartModel impliqués
public class CartModel : BaseModel
{
public int CustomerID { get; set; }
public int FirmID { get; set; }
public List<CartItemModel> CartItems { get; set; }
public CartModel() {
CartItems = new List<CartItemModel>();
}
}
public class CartItemModel : BaseModel
{
public int ServiceTypeID { get; set; }
public int Quantity { get; set; }
}
Mais la valeur par défaut Modèle Binder ne se lie pas les données de formulaire Web à une classe de CartModel. En utilisant Fiddler j'ai pu voir que les données envoyées au serveur est correcte comme vous pouvez le voir sur le cliché suivant
Toute suggestion?
La solution
Après @Artem commentaire K., le code semble bon.
S'il vous plaît vérifier si la classe BaseModel empêche l'objet binded. Vérifiez également que vous n'avez un filtre empêchant la demande en cours d'exécution (comme Autorisez, etc.)