Asp.net mvc 如何在ASP.NET MVC应用程序中使用多视图引擎

Asp.net mvc 如何在ASP.NET MVC应用程序中使用多视图引擎,asp.net-mvc,brail,Asp.net Mvc,Brail,我想在我的asp.net mvc web应用程序中使用两个视图引擎。 第一个是来自MVCContrib项目的Brail视图引擎,另一个是用于生成javascript代码的自定义视图引擎。 但是,我无法将应用程序配置为同时使用两个引擎。我想使用视图文件扩展名来识别哪个引擎应该处理请求 -.brail用于brail发动机 -.json-用于我的自定义引擎 当我将两个引擎添加到global.asax.cs中的ViewEngines集合时,系统总是在寻找*.brail视图,如果没有找到,则抛出异常。它从

我想在我的asp.net mvc web应用程序中使用两个视图引擎。 第一个是来自MVCContrib项目的Brail视图引擎,另一个是用于生成javascript代码的自定义视图引擎。 但是,我无法将应用程序配置为同时使用两个引擎。我想使用视图文件扩展名来识别哪个引擎应该处理请求 -.brail用于brail发动机 -.json-用于我的自定义引擎

当我将两个引擎添加到global.asax.cs中的ViewEngines集合时,系统总是在寻找*.brail视图,如果没有找到,则抛出异常。它从不查找我的*.json视图。。。
ASP.NETMVC框架、Brail视图引擎或我的代码有问题吗?应该如何处理?

我相信您可以在控制器中更改视图引擎。因此,我将扩展您的控制器以通过扩展选择视图引擎。


编辑:如果您的自定义ViewEngine没有处理*.json,那么您的视图引擎中很可能有一个bug。处理此问题的最简单方法是对VirtualPathProviderViewEngine进行子类型化,并在构造函数中设置MasterLocationFormats、ViewLocationFormats和PartialViewLocationFormats。有关一个非常简单的示例,请参阅WebFormViewEngine的源代码。这样,框架代码将为您完成所有提升。

这是不需要的。ViewEngines已经告诉框架它们可以处理哪些扩展名。ViewEngines告诉框架它们在您自己的系统中处理哪些文件扩展名。他说的不是视图的扩展,而是根据请求的扩展更改视图引擎。