2011-02-02 5 views
2

をサポートしていません。デフォルトのビューエンジンが起動し、現在のビューのフォルダと共有フォルダでClientOnDocuments.ascxを見つけようとしますが、DisplayTemplatesEditorTemplatesフォルダにはありません。T4MVCは私が私の見解では、以下を使用する場合、これを気づいたDisplayTemplatesとEditorTemplates

私はT4MVCを使用してかなり遠くになってしまったので、それをダンプしたり、さまざまなスタイルの参照ビューを混ぜたりしたくないです(たとえば、テンプレートへのパスを渡すと上記のように動作します)。

理由はT4MVCが発生し、このコードにある:

public class ViewNames { 
    ... 
     public readonly string FirmHeader = "~/Views/Shared/FirmHeader.ascx"; 
     public readonly string PostsSelector = "~/Views/Shared/PostsSelector.ascx"; 
     static readonly _DisplayTemplates s_DisplayTemplates = new _DisplayTemplates(); 
     public _DisplayTemplates DisplayTemplates { get { return s_DisplayTemplates; } } 
     public partial class _DisplayTemplates{ 
      public readonly string ClientOnDocuments = "ClientOnDocuments"; 
      public readonly string DateTime = "DateTime"; 
     } 
     static readonly _EditorTemplates s_EditorTemplates = new _EditorTemplates(); 
     public _EditorTemplates EditorTemplates { get { return s_EditorTemplates; } } 
     public partial class _EditorTemplates{ 
      public readonly string ClientOnDocuments = "ClientOnDocuments"; 
      public readonly string DateTime = "DateTime"; 
      public readonly string PostCode = "PostCode"; 
     } 

共有ルートのすべてに含まれているビューは罰金であるとのことを見ることができますが、どうやらそれがうまくサブフォルダを処理しません。

私はT4MVCテンプレートファイルを変更できると知っていますが、実際にはDavid Ebboからの応答がこれを変更/修正しようとしていますか?

彼は私が少なくとも12月に彼を見たので、彼に従っていたらうれしいです。

+1

ViewNames(ビューの名前だけを含む)とパスを含むViewPathの2つのクラスがあり、強く型付けされた名前とパスの両方にアクセスできるようになります。 – mare

答えて

4

興味深いことに、この異なる動作は、別のユーザーが問題に遭遇した後、意図的に行われました。 T4MVC.settings.t4にこのを探します。

// Views in DisplayTemplates and EditorTemplates folders shouldn't be fully qualifed as it breaks 
// the templated helper code 
readonly string[] NonQualifiedViewFolders = new string[] { 
    "DisplayTemplates", 
    "EditorTemplates" 
}; 

だから、通常、サブフォルダは、完全なパスを取得しますが、のみ2にはありません。

RenderPartialを呼び出している間に、そのユーザーがDisplayFor/EditorForを呼び出してレンダリングしていたという違いがあると思います。このことができますどのような場合には

、これは設定ファイルではなく、メインテンプレートであるので、あなたはその行動をしたくない場合は、あなたは、単にリストを変更することができ、すなわち

readonly string[] NonQualifiedViewFolders = new string[] { }; 

願っています! :)

+0

完璧、デビッド。 – mare

+0

これを使用すると、T4MVC経由でビューのパスを参照できますが、DisplayFor/EditorForはビューを見つけることができません。私がDisplayForとPartialViewResultの両方で(別のコンテキストで)使用しているDisplayTemplatesビューが1つあるため、あまりにも悪いです。 DisplayForを使い続けたい場合は、コントローラの文字列として修飾されたパスを書き出す必要があります。 – adamjford

+0

DisplayTemplatesとEditorTemplatesについては、完全なパスと予想される動作のための新しいプロパティを持つことはできませんか? – PBo

関連する問題