3

Razor 構文の部分ビューを Asp.net ビューにレンダリングできるように、部分ビューを文字列にレンダリングする必要があります。プロセスの一部には、ビュー エンジンにビューを検索させることが含まれます。

var engine = 
    ViewEngines.Engines
        .OfType<RazorViewEngine>()
        .SingleOrDefault();
if(engine == null)throw new Exception("no razor viewengine");
//useCache is the last parameter in the invocation below
var viewResult = engine
    .FindPartialView(htmlHelper.ViewContext, viewName, false);

useCacheパラメータをに設定するとtrue(つまり、要求するたびに仮想パス プロバイダに検索させたくない場合)、ビューが見つかりません。キャッシュ経由で見つからない場合は、キャッシュされていない方法にフォールバックすると予想していました。

私の期待は間違っていますか?これは、ViewEngine の混合と関係がありますか?

さらに混乱させられるのは、単にViewEngine.Enginesコレクションにビューを検索するように要求しただけでは、useCacheパラメーターが与えられないということです。

var viewResult = 
    ViewEngines
         .Engines
         .FindPartialView(htmlHelper.ViewContext, viewName);

私はこの FTTB で行くと思いますが、疑問が生じます...なぜ不一致なのですか?

4

1 に答える 1

3

およびメソッドはFindView、最初にFindPartialViewASP.NET MVC フレームワークによって内部的に呼び出され、何も見つからない場合は次に呼び出されます。同じことを試すことができます。useCache=trueuseCache=false

さらに混乱させられるのは、単に ViewEngine.Engines コレクションにビューを検索するように要求しただけでは、useCache パラメーターが与えられないということです。

これは、このメソッドが前に説明したことを行うためです。

于 2012-08-23T17:31:55.290 に答える