2011-02-01 6 views
8

私はT4MVCをしばらく使っており、デフォルトではオフになっている「部分的なレンダリング用の明示的なHtmlHelpers」機能が好きです。私はT4MVCバージョン2.6.40を使用しています。T4MVCは、パーシャルをレンダリングする明示的なHtmlHelpersを持つRazorをいつサポートしますか?

私は最近、MVC3にアップグレードし、明示的なHtmlHelpersがRazorパーシャルに生成されないことに気付きました。そのため、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#1 V3.5」の値を有し、18行目にも関します。なぜそれは明示的なバージョン依存性を持たなければならないのですか?それは単に "C#"になることはできませんか?

1つの投稿に2つの別個の質問をすることに対する謝罪。

答えて

11

T4MVC 2.6.42をリリースしました。 CodeplexまたはNuGetから入手できます。カミソリファイルを有するためにT4MVCによる部分として検出することが

注、その名前は、アンダースコア(例えば_foo.cshtml)で開始する必要があります。この制限がなければ、すべてのビューのヘルパーメソッドを作成することになります。これは、オブジェクトを汚染し、価値を追加しないことになります。基本的なRazorビューの前に_を付けてプレフィックスすることは、一般的にはMVCチームが推奨します。

警告としては、それは無関係だと良性です。これを取り除くには、単にlanguage = "C#v3.5"からlanguage = "C#"に変更してください。公式版では変更を加えることができません.3.5を実行すると中断することになります(2つのバージョンを別々に管理したくない)。

+1

Davidありがとう! – Shayne

2

あなたが受け取るコンパイラの警告はそれだけです、警告です。 T4MVCの動作を妨げるものではありません。

カミソリを支援するとして、あなたはテンプレートで適切なコードを見つけた - 単にそれを修正します。

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#コードです。

+2

ありがとうございました。私はT4テンプレートが魔法ではないことを知っています。私は間違いなく自分自身で変更を加えた可能性があります。私はちょうどT4MVCをアップデートしたときに上書きされるような変更をする時間を無駄にしたくなかった。私はダビデの注意にそれを持っていきたいので、誰もが利益を得ることができるように修正をリリースすることができました。私は実際にこれと私はそれを修正するために何をすべきか分かっているので、T4MVCの別のバグを見つけましたが、私はプロジェクトの貢献者になりたいので、寄稿者になるように要求しました。私は受け入れられることを願っています。 – Shayne

関連する問題