カスタムVirtualPathProviderを介してデータをロードすると、奇妙な動作が発生します。このビューをレイアウトとして使用しようとしていることを言及することが重要かもしれません。
public class MyVirtualPathProvider : VirtualPathProvider
{
public MyVirtualPathProvider()
: base()
{
}
public override CacheDependency GetCacheDependency(string virtualPath, IEnumerable virtualPathDependencies, DateTime utcStart)
{
if ((virtualPath.StartsWith("/Path/") ||
virtualPath.StartsWith("~/Path/")) && virtualPath.EndsWith(".cshtml"))
{
String name = virtualPath.Replace("/Path/", "").Replace(".cshtml", "");
Uri uri = new Uri("http://www.example.com/Handler.ashx?path=" + name);
return new WebCacheDependency(uri.ToString());
}
return base.GetCacheDependency(virtualPath, virtualPathDependencies, utcStart);
}
public override bool FileExists(string virtualPath)
{
if ((virtualPath.StartsWith("/Path/") ||
virtualPath.StartsWith("~/Path/")) && virtualPath.EndsWith(".cshtml"))
return true;
return base.FileExists(virtualPath);
}
public override VirtualFile GetFile(string virtualPath)
{
if (virtualPath.StartsWith("/Path/") || virtualPath.StartsWith("~/Path/"))
return new TemplateVirtualFile(virtualPath);
return base.GetFile(virtualPath);
}
}
カスタム(ダミー)CacheDependencyも実装しました
public class WebCacheDependency : CacheDependency
{
public WebCacheDependency(String url)
{
this.SetUtcLastModified(DateTime.UtcNow);
}
}
現在、機能しないものが2つあります。まず、ロードされたすべてのビューがキャッシュされ、次に、ファイル内のコード(@ Html.ActionLink ...など)が機能せず、「アセンブリがありません」というエラーが表示されます。
これらの2つの問題を解決する方法を誰かが考えていますか?
2番目の問題(リンク)の解決策はすでにありますが、FileExistsメソッド内でこの問題をどのように解決できるかは実際にはわかりません。
ありがとうございました!
更新:エラーメッセージの画像