- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在继承 RazorViewEngine我正在尝试覆盖 FindView,但我对使用 ViewLocationCache
实现缓存的方式感到困惑。
谁能举个例子?
最佳答案
我终于明白了。这是我的整个实现:
public override ViewEngineResult FindView(ControllerContext controllerContext, string viewName, string masterName, bool useCache)
{
//Implement defualt exceptions
if(controllerContext == null)
throw new ArgumentNullException("The controllerContext parameter is null");
if(string.IsNullOrEmpty(viewName))
throw new ArgumentException("The viewName parameter is null or empty.");
//Check cache if specified
if(useCache && this.ViewLocationCache != null){
string cachedLocation = ViewLocationCache.GetViewLocation(controllerContext.HttpContext, generateCacheKey(controllerContext, viewName));
if (!string.IsNullOrEmpty(cachedLocation))
return new ViewEngineResult(CreateView(controllerContext, cachedLocation, masterName), this);
}
//Create arguments for location formatting
string trimmedViewName = string.Empty;
if (viewName.EndsWith(".cshtml"))
trimmedViewName = viewName.Remove(viewName.Length - 7);
else
trimmedViewName = viewName;
object[] args = new object[] { trimmedViewName, controllerContext.RouteData.GetRequiredString("controller"), controllerContext.RouteData.GetRequiredString("module") };
//Attempt to locate file
List<string> searchedLocations = new List<string>();
foreach(string location in ViewLocationFormats){
string formatedLocation = string.Format(location,args);
searchedLocations.Add(formatedLocation);
if (FileExists(controllerContext, formatedLocation))
{
//File has been found. Add to cache and return view
if(this.ViewLocationCache != null)
ViewLocationCache.InsertViewLocation(controllerContext.HttpContext, generateCacheKey(controllerContext, viewName), formatedLocation);
return new ViewEngineResult(CreateView(controllerContext, formatedLocation, masterName), this);
}
}
//Couldnt find view, return searched locations
return new ViewEngineResult(searchedLocations);
}
public string generateCacheKey(ControllerContext controllerContext, string viewName)
{
return string.Format("{0}|{1}", controllerContext.RouteData.GetRequiredString("module"), viewName);
}
关于c# - 如何实现RazorViewEngine FindView缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13675784/
App.Web 和 App.Views 是我在一个解决方案中的项目,我将我的 View 放在 App.Views 中并使用 RazorGenerator 进行预编译。 。如果我使用 App.Web 像
我需要将局部 View 呈现为字符串,这样我就可以将 Razor 语法局部 View 呈现为 Asp.net View 。该过程的一部分涉及让 View 引擎找到 View : var engine
我正在考虑实现自定义 RazorViewEngine。基本上我有两个具有相同代码库的站点。不同之处在于它们看起来不同。我想覆盖标准 View 引擎,使 MVC 在两个不同的位置查看其 View 、布局
应用程序是一个带有 RAZOR View 引擎的 MVC3 应用程序。 这里使用的 Controller 是 TestController。 我正在使用嵌套 View 。 基本 View (项目列表)
我正在 ASP.Net MVC5 中工作,我想使用 Javascript 将密码字段与确认密码进行匹配,但由于它使用 Razor View Engine,我无法添加 onmouseleave> 我的文
我确实有一些文本(模板),看起来像“你好@FirstName,欢迎来到@Address”。最初的计划是将这个文本文件放在一个 View 包中,然后通过 Razor 传递它,它会完成这项工作。 现在,我
我正在尝试使用 Razor 实现自定义 View 引擎。目标是如果 View 位于子文件夹中以使用该 View 。 我的 View 引擎源自 RazorViewEngine public class
测试 UI 一直是 TDD 中的困难之一,但我的印象是,使用 MVC3 中的 Razor ViewEngine,可以获得针对特定 View 和输入集呈现的输出。然后,您可以使用字符串函数(例如“Con
我有一个带有电子邮件项目的应用程序,它公开了一个类来使用 IRazorViewEngine 编译电子邮件模板,并发送它。 但是,这用于几个不同的项目,默认情况下 RazorViewEngine 似乎只
我已经子类化 RazorViewEngine所以我可以检查 Request.Browser.IsMobileDevice并在 View 文件名中添加一个特殊的移动标识符以供抓取。但是我无法访问 Req
我只在我的一个 ASP.NET MVC 3 应用程序上使用 RazorViewEngine,并且我在 的 Application_Start 方法中使用以下代码清除了 Web 窗体 View 引擎>G
我想在我的 ASP.NET Core 2.1 Web API 项目中找到我的 cshtml 文件。为此,我使用了这段代码: var httpContext = new DefaultHttpConte
我是一名优秀的程序员,十分优秀!