我创建了一个简单的 ASP.NET MVC 1.0 版应用程序。我有一个 ProductController,它有一个动作索引。在视图中,我在 Product 子文件夹下创建了一个对应的 Index.aspx。
然后我引用了 Spark dll 并在同一个产品视图文件夹下创建了 Index.spark。Application_Start 看起来像
protected void Application_Start()
{
RegisterRoutes(RouteTable.Routes);
ViewEngines.Engines.Clear();
ViewEngines.Engines.Add(new Spark.Web.Mvc.SparkViewFactory());
ViewEngines.Engines.Add(new WebFormViewEngine());
}
我的期望是,由于 Spark 引擎在默认 WebFormViewEngine 之前注册,所以当浏览 Product 控制器中的 Index 操作时,应该使用 Spark 引擎,而 WebFormViewEngine 应该用于所有其他 url。
但是,测试表明 Product 控制器的 Index 操作也使用了 WebFormViewEngine。
如果我注释掉 WebFormViewEnginer 的注册(代码中的最后一行),我可以看到 Index 操作由 Spark 引擎呈现,其余 url 生成错误(因为默认引擎消失了),这证明了我所有的火花代码是正确的。
现在我的问题是视图引擎是如何解决的?为什么注册序列不生效?