当我在视图中使用以下内容时,我注意到了这一点:
<% Html.RenderPartial(MVC.Shared.Views.EditorTemplates.ClientOnDocuments); %>
上面的行只返回视图的名称,所以在这种情况下ClientOnDocuments
. 然后默认视图引擎启动并尝试ClientOnDocuments.ascx
在当前视图的文件夹和 Shared 文件夹中查找,但不在DisplayTemplates
andEditorTemplates
文件夹中查找。
由于我在使用 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 月在这里见过他。