3

私のカスタムVirtualPathProvider経由でデータを読み込むと、奇妙な動作が発生します。 このビューをレイアウトとして使用しようとしていることは重要です。カスタムVirtualPathProvider(ASHXソース)からカミソリビューをロードするときに異常な動作が発生する

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); 
    } 
} 

を実装しています。まず、ロードされたすべてのビューがキャッシュされていて、ファイル内のコード(@ Html.ActionLink ...など)は機能しません。エラーは「アセンブリが見つかりません」です。

誰にも2つの問題を解決する方法がありますか?

すでに2番目の問題(link)の解決策がありますが、FileExistsメソッド内でこの問題がどのように解決できるかは実際には分かりません。

ありがとうございました!

更新:エラーメッセージ enter image description here

+0

ソリューションを見つけましたか? – jgauffin

答えて

1

の画像は、あなたのweb.configファイルカミソリ用に、正しくセットアップを持っていますか? pageBaseTypeWebViewPageと指定しないと、ViewBagはデフォルトの基本タイプでないWebPageBaseにアクセスすることはできません。

<system.web.webPages.razor> 
    <pages pageBaseType="System.Web.Mvc.WebViewPage"> 
    [...] 
    </pages> 
</system.web.webPages.razor> 

pageBaseType属性:

あなたのweb.configファイルには、次のようになります。詳細:デフォルトでhttp://msdn.microsoft.com/en-us/library/system.web.webpages.razor.configuration.razorpagessection.pagebasetype(v=vs.99).aspx

PageBaseTypeのデフォルト値はSystem.Web.WebPages.WebPageです。

+0

それはそれです! :-) ありがとう –

関連する問題