2015-01-25 12 views
6

Mam to poprawnie księgowanie obrazu i powiązanie z właściwością HttpPostedFileBase w moim modelu widoku, ale gdy wstawię tę samą właściwość w klasie bazowej modelu widoku, to doesn Model 't wiąże bajty. Wciąż pokazuje nazwę obrazu, ale nie strumień treści.HttpPostedFileBase ma 0 bajtów na POST tylko dla właściwości modelu widoku podstawowego

Przetestowałem wszystko, co mogę wymyślić. Proszę pomóż!

Te zdjęcia mówią całej prawdy: enter image description here enter image description here enter image description here enter image description here enter image description here

Z góry dzięki. Daj mi znać, jeśli coś nie jest jasne.

UPDATE

myślę, że to jest legit bug. Wypróbowałem wszystkie poniższe sugestie (od 1/26) przed opublikowaniem na SO. Próbowałem również: 1. Tworzenie właściwości podstawowej jako wirtualnej i przesłanianie jej w klasie podrzędnej 2. tworzenie nowej właściwości w klasie potomnej, która jedynie pobiera/ustawia właściwość podstawową

Moje rozwiązanie, które jest dalekie od elegancki, ma dodać "tymczasową" właściwość na klasie potomnej, a pierwszą rzeczą w metodzie akcji MVC ustawić do niej właściwość podstawową. Mam nadzieję, że pojawi się prawdziwe rozwiązanie i mogę wycofać to cloodge i zrobić odpowiednią poprawkę.

+1

Czy masz enctype atrybut = "multipart/form-data" na formularzu, nie może powiedzieć z screenów? – Andreas

+0

@Andreas, tak, dodałem zrzut ekranu. –

+0

Spróbuj przesłać ten sam obraz w obu polach i wypróbuj jedno zdjęcie na raz. Chcesz się upewnić, że twoje "przypadki testowe" nie wpływają na siebie nawzajem. – Shoe

Odpowiedz

0

Jeśli to ja, to utworzę niestandardowy segregator v.simple dla klasy modelu i ręcznie go rozwiążę. Prawdopodobnie będzie to łatwiejsze (i bardziej oczywiste dla przyszłej konserwacji) niż próba rozproszenia słabości DefaultModelBinder. Co więcej, oznaczałoby to, że nie musiałbyś (niepotrzebnie) zanieczyszczać swoich struktur/akcji kontrolera/testów jednostkowych.

Oto dobry artykuł na temat tworzenia segregatora na podstawie domyślnego modelu spoiwa: http://www.codeproject.com/Articles/605595/ASP-NET-MVC-Custom-Model-Binder.

HTH