2010-02-23 25 views
9

Chcę powiązać kolekcji za pomocą prefiksu, tak jakASP.NET MVC model Binding kolekcję z przedrostkiem

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

stworzyłem elementów formularza za pomocą

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

które generowane wejść html jak Ten problem polega na tym, że domyślny segregator modelu nie będzie wiązał się z prefiksem. Otrzymuję null dla modeli arg w metodzie akcji.

Jeśli usuwam przedrostki z html i usuwam atrybut Bind, wszystko działa poprawnie. Nie mogę sobie wyobrazić, że domyślny segregator nie obsłuży prefiksu w kolekcji, więc muszę zrobić coś złego.

Proszę o pomoc. Twoje zdrowie!

Odpowiedz

10

Prefiks Wewnątrz [Bind] nie jest poprzedzony nazwą parametru, całkowicie zastępuje nazwę parametru. Więc jeśli metoda działanie ma ten podpis:

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

spoiwo spodziewa foo[0], foo[1] itp

+0

DOH! Ciężki dzień. Dzięki za ustawienie mojej głowy prosto! – spot

1

UpdateModel() i TryUpdateModel() pobierają parametr prefiksu. Czy próbowałeś tego?

Powiązane problemy