Как я могу загрузить файлы внешнего макета, используя RazorEngine? - PullRequest
2 голосов
/ 05 июля 2011

Я пытался в течение многих дней (на самом деле, дней) использовать «внешние» файлы (предоставленные с другого сервера с помощью обработчика ashx) в качестве макетов в Razor.

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

Это дает мнеошибка о том, что путь должен быть виртуальным.

Я перепробовал все, что мог придумать: VirtualPathProviders, пользовательский RazorViewEngines и т. д.

Ничего не помогает, кто-нибудь сделалэто или кто-то может дать мне подсказку?

1 Ответ

1 голос
/ 06 июля 2011

Создайте VirtualPathProvider, который обрабатывает виртуальные пути, начинающиеся с магического токена, и передает все другие пути в его Previous свойство .
Например:

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