Mam projekt MVC3, nad którym pracuję, który ma widok ze skojarzonym silnie wpisanym modelem widoku. Otrzymałem zadanie dodania opcjonalnej sekcji do tego widoku, która zawierałaby dane dla drugiego modelu, z których około połowa jest współdzielona z pierwszym modelem.

Moje pytanie brzmi, jaki jest najlepszy sposób na wdrożenie tego? Czy powinienem po prostu dodać obiekt, który reprezentuje model opcjonalny do modelu widoku i spróbować zmapować wartości z tego miejsca?

Jeśli zrobię to w ten sposób, jak mogę powiązać redaktorów z obydwoma modelami?

0
Philter 7 luty 2012, 02:28

2 odpowiedzi

Najlepsza odpowiedź

Dodanie opcjonalnego modelu do modelu widoku jest najlepszym wyborem, ponieważ w przeciwieństwie do ViewBag jest bezpieczny dla typu i nadal możesz korzystać z pomocników HTML. Pamiętaj tylko, aby przed renderowaniem sprawdzić drugi model pod kątem wartości NULL (ponieważ jest to opcjonalne). W przypadku udostępniania właściwości, Twój model widoku może mieć specjalne metody pobierania/ustawiania, które utrzymają obydwa modele zsynchronizowane wewnętrznie.

1
Felipe Castro 7 luty 2012, 02:44

Myślę, że rozumiem, o co prosisz i w ten sposób udało mi się to w przeszłości.

Dodaj opcjonalny model jako parametr w modelu widoku, a następnie utwórz widok częściowy, który jest wpisywany do tego opcjonalnego modelu. Jeśli spełnione są kryteria, które pozwalają na wyświetlenie częściowego widoku, przekazujesz viewmodel.optionalmodel do tego częściowego widoku.

Trzeba tylko trochę uważać na nakładanie się parametrów, które powoduje bóle głowy (jak w przypadku zerowych referencji)

1
Brian 7 luty 2012, 02:34