2011-02-01 9 views
8

Używam T4MVC od jakiegoś czasu i uwielbiam funkcję "explicite HtmlHelpers for rendering partials", która domyślnie jest wyłączona. Używam T4MVC w wersji 2.6.40.Kiedy program T4MVC będzie obsługiwał maszynę Razor z jawnymi znacznikami HtmlHelpers do renderowania częściowych?

Niedawno zaktualizowałem do wersji MVC3 i zauważyłem, że nie generuję żadnych jawnych HtmlHelpers dla częściowych maszyn Razor, więc przyjrzałem się kodowi źródłowemu szablonu tekstowego T4MVC i znalazłem metodę o nazwie "GetPartials", która ma następujący wiersz kodu:

var parts = GetControllers() 
     .Select(m => m.ViewsFolder) 
     .SelectMany(m => m.Views) 
     .Where(m => m.Value.EndsWith(".ascx")); 

Jest więc oczywiste, że widoki Razor nie są obsługiwane.

Chciałbym również wspomnieć, że po uruchomieniu szablonu T4 (kliknięcie prawym przyciskiem myszy> uruchom narzędzie niestandardowe) otrzymuję ostrzeżenie kompilatora stwierdzające: "Kompilatory języka C# 2.0 i C# 3.5 nie są już obsługiwane. skompilowane przy użyciu kompilatora wersji 4 zamiast "v3.5", jak określono. "

Dotyczy linii 18, w której atrybut języka szablonu ma wartość "C# v3.5". Dlaczego musi mieć wyraźną zależność od wersji? Czy to nie może być po prostu "C#"?

Przeprosiny za zadawanie dwóch oddzielnych pytań w jednym poście.

Odpowiedz

11

Właśnie wydałem T4MVC 2.6.42, aby rozwiązać ten problem. Możesz go pobrać z Codeplex lub z NuGet.

Należy pamiętać, że aby plik brzytwy był wykryty jako częściowy przez T4MVC, jego nazwa musi zaczynać się od podkreślenia (np. _foo.cshtml). Bez tego ograniczenia skończylibyśmy tworzyć metody pomocnicze dla wszystkich widoków, które zanieczyszczałyby rzeczy, a nie dodawały wartości. Zauważ, że prefiksowanie częściowych widoków maszynki za pomocą _ jest ogólnie zalecane przez zespół MVC.

Co do ostrzeżenia, to nie ma związku i jest łagodne. Aby się go pozbyć, po prostu zmień język = "C# v3.5" na language = "C#". Nie mogę wprowadzić tej zmiany w oficjalnej wersji, która spowodowałaby jej uszkodzenie podczas pracy w wersji 3.5 (i nie chcę utrzymywać dwóch oddzielnych wersji tylko po to).

+1

Dziękuję David! – Shayne

2

Otrzymane ostrzeżenie o kompilatorze jest tylko ostrzeżeniem. To nie przeszkadza w pracy T4MVC.

Jeśli chodzi o obsługę maszynki Razor, znalazłeś odpowiedni kod w szablonie - po prostu go zmodyfikuj.

var parts = GetControllers() 
     .Select(m => m.ViewsFolder) 
     .SelectMany(m => m.Views) 
     .Where(m => m.Value.EndsWith(".ascx") || m.Value.EndsWith(".cshtml") || m.Value.EndsWith(".vbhtml")); 

Chciałbym spróbować.

To tylko szablon T4, a nie magia. Wszystko, co zawiera, to prosty kod C#, który pobiera informacje o projekcie ze środowiska Visual Studio i generuje dość prosty kod C#.

+2

Dzięki. Wiem, że szablony T4 nie są magiczne. Zdecydowanie mógłbym dokonać zmiany osobiście. Po prostu nie chciałem tracić czasu na wprowadzanie zmian, które zostaną po prostu nadpisane przy następnej aktualizacji T4MVC. Chciałem zwrócić uwagę Davida, aby mógł wydać poprawkę, aby wszyscy mogli skorzystać. Naprawdę znalazłem inny błąd w T4MVC od tego czasu i wiem, co zrobić, aby to naprawić, ale chcę stać się współtwórcą projektu, więc właśnie poprosiłem o pomoc. Mam nadzieję, że zostanę przyjęty. – Shayne

Powiązane problemy