我需要将局部 View 呈现为字符串,这样我就可以将 Razor 语法局部 View 呈现为 Asp.net View 。该过程的一部分涉及让 View 引擎找到 View :
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
(即我不希望虚拟路径提供程序在我每次请求时都搜索它), View 已经找不到了。我原以为如果没有通过缓存找到它,我们会回退到非缓存方法。
我的期望错了吗?这与混合 ViewEngine 有关吗?
更让我困惑的是,如果我们只是请求 ViewEngine.Engines
集合来查找 View ,我们不会得到 useCache
参数:
var viewResult =
ViewEngines
.Engines
.FindPartialView(htmlHelper.ViewContext, viewName);
我想我会选择这个 FTTB,但这引出了一个问题……为什么会出现差异?
最佳答案
FindView
和 FindPartialView
方法由 ASP.NET MVC 框架内部调用,首先是 useCache=true
,然后是 useCache=false
如果没有找到。您也可以尝试这样做。
Confusing me further, if we simply ask the ViewEngine.Engines collection to find the view, we're not given a useCache parameter:
那是因为这个方法做了我之前解释过的事情。
关于c# - RazorViewEngine.FindPartialView 使用缓存。它有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12096827/