我需要渲染一個字符串的局部視圖,所以我可以渲染一個Razor語法部分視圖到一個Asp.net視圖。該過程的一部分涉及獲得視圖引擎找到的觀點:RazorViewEngine.FindPartialView useCache。它有什麼作用?
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
(即我不想在虛擬路徑提供給每一個我提出要求的時間進行搜索),視圖不再被發現。我會預料到,如果它沒有通過緩存找到,我們會回退到非緩存方法。
我的期望錯了嗎?這與混合ViewEngines有關嗎?
進一步混淆我,如果我們簡單地要求ViewEngine.Engines
收集找到的觀點,我們沒有給出useCache
參數:
var viewResult =
ViewEngines
.Engines
.FindPartialView(htmlHelper.ViewContext, viewName);
我想我會用這個FTTB去,但它迴避了問題...爲什麼這種差異?
Grand。這使得它看起來更明智。現在我只是自己絆倒MVC代碼。 – spender
好的。 ViewEngines.Engines.FindPartialView的實現清除了一切。謝謝@Darin。 – spender
我查看了反編譯的源代碼,但似乎無法訪問'useCache'參數來強制阻止緩存。如何通過'ViewEngines.Engines'訪問'useCache'參數? –