2010-02-23 12 views
9

I eine Sammlung unter Verwendung eines Präfix binden möchten, wie soASP.NET MVC Modell Binden einer Sammlung mit einem Präfix

public ActionResult Whatever([Bind(Prefix = "Prefix")] CustomModel[] models) 

erstellt I Elemente Form

<%= Html.TextBox("Prefix.models[" + i + "].Property") %> 

verwendet, die wie HTML Eingänge erzeugt Dieses

Mein Problem ist, dass das Standardmodell Bindemittel nicht mit einem Präfix binden wird. Ich bekomme null für die Modelle arg in der Aktionsmethode.

Wenn ich die Präfixe aus dem HTML entfernen und das Bind-Attribut entfernen, funktioniert alles einwandfrei. Ich kann mir nicht vorstellen, dass der Standardmodellbinder nicht mit einem Präfix auf einer Sammlung umgehen wird, also muss ich etwas falsch machen.

Bitte helfen. Prost!

Antwort

10

Präfix innerhalb von [Bind] wird nicht dem Parameternamen vorangestellt, es ersetzt den Parameternamen vollständig. Also, wenn Ihre Aktionsmethode hat diese Unterschrift:

public ActionResult MyAction([Bind(Prefix = "foo")] string[] bar) { ... } 

Das Bindemittel foo[0] erwartet, foo[1] usw.

+0

DOH! Harter Tag. Danke, dass du meinen Kopf gerade gestellt hast! – spot

1

UpdateModel() und TryUpdateModel() nehmen einen Parameter für das Präfix. Hast du das probiert?

Verwandte Themen