Im ASP.NET MVC möchte ich ein häufig verwendeter Satz von Kreditkartenfeldern wiederverwenden, indem ich sie in einer Teilansicht platzieren und diese Teilansicht in einem anderen Formular in einer übergeordneten Ansicht rendern.
Das Problem ist, dass, wenn das CreditCard-Objekt Teil eines Modells ist, das selbst ein komplexes Objekt ist, wenn ich es an die Teilansicht übergebe, fehlen bei der Formularübermittlung die Elternobjektnamenpräfixe, die es dem Standardmodellbinder ermöglichen würden, die Felder dem richtigen Eigenschaft des komplexen Objekts zuzuordnen.
Kreditkartenfelder gerendert in Teilansicht (Falsches Verhalten):
@Html.RenderPartial("~/Views/Pay/CCForm.cshtml", Model.CreditCard ,
new ViewDataDictionary());
Post-String:
PayOption=1&CreditCardNumberPlainText=0000000000000&StartDateMm=03&StartDateYyyy=2008&ExpiryDateMm=03&ExpiryDateYyyy=2017&SecurityCode=111&IssueNumber=1&X-Requested-With=XMLHttpRequest
Standardformular (Richtiges Verhalten), in dem Kreditkartenfelder in der Hauptansicht mit Feldern wie folgt gerendert werden:
@Html.TextBoxFor(x => x.CreditCard.IssueNumber, new {@maxlength = 3, @size = 3})
Post-String:
PayOption=1&CreditCardInfo.CreditCardNumberPlainText=0000000000000000&CreditCardInfo.StartDateMm=02&CreditCardInfo.StartDateYyyy=2009&CreditCardInfo.ExpiryDateMm=04&CreditCardInfo.ExpiryDateYyyy=2014&CreditCardInfo.SecurityCode=111&CreditCardInfo.IssueNumber=1&X-Requested-With=XMLHttpRequest