私の見解で以下を使用したとき、私はこれに気づきました:
<% Html.RenderPartial(MVC.Shared.Views.EditorTemplates.ClientOnDocuments); %>
上記の行はビューの名前のみを返すため、この場合はClientOnDocuments
. 次に、デフォルトのビュー エンジンが起動しClientOnDocuments.ascx
、現在のビューのフォルダーと共有フォルダーを検索しようとしますが、フォルダー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がこれを変更または修正する予定があるかどうかについて、実際に回答を求めています。
願わくば、彼が SO に続くことを願っています。少なくとも私は 12 月にここで彼に会いました。