我已经尝试了几天(真的,几天)使用“外部”文件(使用ashx处理程序从不同的服务器提供)作为Razor中的布局。
@{
Layout = "http://someServer/templates.ashx?path=/my/template.cshtml";
}
这给我一个关于路径必须是虚拟路径的错误。
我已经尝试了我能想到的一切:VirtualPathProviders
,自定义RazorViewEngines
等。
没有任何帮助,有人这样做过,或者有人能给我一个提示吗?
答案 0 :(得分:1)
创建一个VirtualPathProvider
来处理以魔术标记开头的虚拟路径,并将所有其他路径传递给其Previous
property。
例如:
public override VirtualFile GetFile(string virtualPath) {
if (virtualPath.StartsWith("~/MySpecialTemplateServer"))
return new MyServerVirtualFile(virtualPath);
else
return Previous.GetFile(virtualPath);
}