如何使用RazorEngine加载外部布局文件?

时间:2011-07-05 19:44:36

标签: razor viewengine

我已经尝试了几天(真的,几天)使用“外部”文件(使用ashx处理程序从不同的服务器提供)作为Razor中的布局。

@{
    Layout = "http://someServer/templates.ashx?path=/my/template.cshtml";
}

这给我一个关于路径必须是虚拟路径的错误。

我已经尝试了我能想到的一切:VirtualPathProviders,自定义RazorViewEngines等。

没有任何帮助,有人这样做过,或者有人能给我一个提示吗?

1 个答案:

答案 0 :(得分:1)

创建一个VirtualPathProvider来处理以魔术标记开头的虚拟路径,并将所有其他路径传递给其Previous property
例如:

public override VirtualFile GetFile(string virtualPath) {
    if (virtualPath.StartsWith("~/MySpecialTemplateServer"))
        return new MyServerVirtualFile(virtualPath);
    else
        return Previous.GetFile(virtualPath);
}