8

私はしばらくの間T4MVCを使用していて、デフォルトでオフになっている「パーシャルをレンダリングするための明示的なHtmlHelpers」機能が大好きです。T4MVCバージョン2.6.40を使用しています。

最近MVC3にアップグレードしたところ、Razorパーシャルに対して明示的なHtmlHelpersが生成されていないことに気付いたので、T4MVCテキストテンプレートのソースコードを調べて、次のようなコード行を持つ「GetPartials」という名前のメソッドを見つけました。

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

したがって、Razorビューがサポートされていないことは明らかです。

また、T4テンプレートを実行すると(右クリック>カスタムツールを実行)、「C#2.0およびC#3.5コンパイラはサポートされなくなりました。テンプレートは常にバージョンでコンパイルされます」というコンパイラ警告が表示されます。指定された「v3.5」の代わりに4コンパイラ。」

これは、テンプレート言語属性の値が「C#v3.5」である18行目に関連しています。なぜ明示的なバージョン依存関係が必要なのですか?「C#」だけじゃないの?

1つの投稿で2つの別々の質問をしたことをお詫びします。

4

2 に答える 2

11

これに対処するために、T4MVC2.6.42をリリースしました。CodeplexまたはNuGetから入手できます。

かみそりファイルをT4MVCによってパーシャルとして検出するには、その名前をアンダースコア(_foo.cshtmlなど)で始める必要があることに注意してください。この制限がないと、すべてのビューに対してヘルパーメソッドを作成することになり、物事を汚染し、価値を付加しません。部分的なRazorビューの前に_を付けることは、MVCチームによって一般的に推奨されていることに注意してください。

警告に関しては、それは無関係であり、良性です。これを取り除くには、language = "C#v3.5"をlanguage = "C#"に変更するだけです。3.5で実行すると壊れてしまうため、公式バージョンでその変更を加えることはできません(そして、そのためだけに2つの別々のバージョンを維持したくありません)。

于 2011-02-02T02:42:38.350 に答える
2

受け取るコンパイラの警告は、まさにその警告です。T4MVCの動作を妨げているわけではありません。

Razorのサポートに関しては、テンプレートに適切なコードが見つかりました。変更するだけです。

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"));

やってみます。

これは単なるT4テンプレートであり、魔法ではありません。含まれているのは、Visual Studio環境からプロジェクト情報を取得してかなり単純なc#コードを生成する単純なc#コードだけです。

于 2011-02-01T15:45:54.143 に答える