2009-05-12 11 views
13

Istnieje wiele pytań na temat SO dotyczących Zobacz silniki w ASP.Net MVC, a także o użyciu "niestandardowych" zamiast "domyślnych". Dla mnie jako programisty hobbistycznego termin "Widok silnika" jest nowy i nie byłem w stanie zrozumieć, co to znaczy. Moje pytania to:Co to jest silnik widoku ASP.Net MVC?

  1. Co to jest widok silnika?

  2. Co robi View Engine i jaka jest rola we wzorcu MVC? (Blisko związane z 1 ...)

  3. Jakie są główne cechy/właściwości domyślnego mechanizmu wyświetlania, które programiści chcą zmienić/uniknąć, przełączając się na inny mechanizm wyświetlania?

  4. Jakie są główne zalety typowych innych przeglądarek, na których deweloperzy decydują się na używanie innego niż standardowy? (Kilka razy widziałem nazwę "Spark View Engine" i założę się, że są też inni).

  5. Kiedy (w jakich scenariuszach) chcę opracować własny mechanizm wyświetlania?

Myślę, że to wszystko, o co chcę zapytać (na razie). Daj mi View Engines 101! =)

+0

Jeśli to powinno być wiki społecznościowe, proszę dać mi znać. –

+0

Nie sądzę, że tak – TStamper

Odpowiedz

5

"Mechanizm wyświetlania" obsługuje renderowanie widoku do html, xml lub dowolnego typu zawartości, który ma być emitowany. Wewnątrz "MVC" byłby to aspekt Widoku (V).

Różne silniki widoku mają różne składnie itp. Do zarządzania renderowaniem. Decyzja o użyciu innego mechanizmu wyświetlania jest najprawdopodobniej bardzo specyficzna dla projektanta/programisty. W niektórych przypadkach mogą zobaczyć rzeczywiste lub postrzegane ograniczenie domyślnego mechanizmu wyświetlania; w innych przypadkach może to być po prostu inny cel projektu lub koncentracja.

Jeśli chodzi o Spark, ich głównym celem jest o wiele bardziej zwięzły niż domyślny mechanizm wyświetlania i aby pozostać w składni jak w HTML, jak to możliwe, zamiast przenosić się do bloków skryptu ASP.NET.

Jako użytkownik końcowy, jedyny czas, w którym chcesz utworzyć własny mechanizm wyświetlania, prawdopodobnie nigdy nie będzie. ;) Nie jest to zadanie, które należy podjąć lekko, i prawdopodobnie skończy się ponowne wdrażanie funkcjonalności, która już istnieje w istniejącym silniku widoku.

Edit

OK. Tak więc pliki View.aspx są częścią View Engine, czy też View Engine zestaw klas, które pomagają wybrać , który View.aspx (lub innego typu odpowiedź ), które powinny być renderowane? Jak działa ?

Wzór MVC informuje, że model, widok i kontroler będą oddzielnymi "rzeczami". W ASP.NET MVC domyślny mechanizm wyświetlania wykorzystuje istniejący framework ASP.NET, który zawiera strony wzorcowe, pliki ASPX itp. Spark robi coś podobnego, ale jest to inny silnik, więc nie działa dokładnie tak samo. Więc w ogólnym sensie pliki widoku nie są specyficzne dla silnika, ale określone pliki, ich układ na dysku i ich zawartość są specyficzne dla silnika widoku.

+0

OK. A więc czy pliki View.aspx są częścią View Engine, czy też View Engine to zestaw klas, które pomagają wybrać, który widok.aspx (lub inny typ odpowiedzi) powinien być renderowany? Jak to działa? –

1

Oprócz chęci całkowitego zastąpienia mechanizmu wyświetlania (np. Spark), można również utworzyć własny mechanizm wyświetlania, aby dokonać niewielkiej zmiany w zachowaniu domyślnego mechanizmu wyświetlania. Można to zrobić, tworząc nowy mechanizm wyświetlania, który dziedziczy z domyślnego silnika i zastępuje pewne zachowanie.

Jednym z typowych przykładów jest podkręcanie w miejscu, w którym mechanizm wyświetlania wygląda na dysku twardym dla plików .aspx. Na przykład możesz utworzyć mechanizm wyświetlania, który automatycznie przełącza, który plik view.aspx jest używany na podstawie tego, czy użytkownik jest na urządzeniu mobilnym.

Zapoznaj się z Mobile Web Sites with ASP.NET MVC and the Mobile Browser Definition File, aby uzyskać naprawdę dobry przykład realizacji tego.

Aktualizacja:

Scott właśnie opublikował updated ViewEngine implementation że ma ważne ulepszenia vs wstępnej realizacji połączonego powyżej.