asp.net-mvc-3 - 如果 ViewEngines 集合中有多个引擎,MVC3 如何选择要使用的 ViewEngine?

标签 asp.net-mvc-3 viewengine

我有一个内部开发的自定义 View 引擎。在同一个项目中,我想对某些页面使用 Razor,对某些页面使用我的自定义引擎。 MVC 框架如何选择使用哪个引擎?顺便说一句,我的自定义引擎不需要任何模板,它根据数据库中的元数据呈现页面。对于我的自定义引擎,我不想设置任何模板文件。
我期待的是应该有一种方法来驱动框架使用基于 Controller 名称和 Action 名称的某些引擎。
MVC3 中是否存在这种灵活性?

最佳答案

你的 View 引擎应该实现 IViewEngine界面。在您使用 ViewEngines.Engines.Add() 注册您的 View 引擎后方法,MVC 框架会调用 FindViewFindPartialView每当它需要 View 引擎来呈现 View 时。

多个 View 引擎并排运行是绝对可能的。如果您不希望在特定情况下使用您的 View 引擎,您 return new ViewEngineResult(new string[0]);来自 FindViewFindPartialView MVC 会选择另一个 View 引擎。如果您确实希望使用您的 View 引擎,请返回一个有效的 ViewEngineResult指向您想要 IView 的 View 类(即实现 Render )结果。
useCache 有一些细节范围。如果您想了解更多信息,Louis DeJardin 在 TechEd 2011 上有一个关于构建您自己的 View 引擎的精彩演讲。您可以找到Writing an ASP.NET MVC View Engine的视频在第 9 channel 。

关于asp.net-mvc-3 - 如果 ViewEngines 集合中有多个引擎,MVC3 如何选择要使用的 ViewEngine?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8284698/

相关文章:

asp.net-mvc - 如何在 ASP.Net MVC 3 中选择性地呈现一个部分?

c# - 使用 ASP.Net MVC 3 将图像上传到 Amazon S3

javascript - 是否有支持 JavaScript View 的 ASP.Net MVC View 引擎?

asp.net-mvc - 是否有 ASP MVC 的 View 引擎为 'designable' ?

c# - 在 ASP.NET MVC6 中设置 View 引擎以在单元测试中使用 AspNet.TestHost.TestServer

c# - 文件已发送,但无法显示下载(ie9),对用户保持沉默(无指示)

asp.net-mvc-3 - MVC3虚拟目录 View 文件夹非常慢

asp.net-mvc-3 - 如果 Controller.OnAuthorization() 返回 void 那么我如何拒绝访问?

asp.net-mvc - 未找到 Nancy Razor Viewengine

asp.net-mvc - 扩展Razor View Engine以处理渲染