使用ASP.NET MVC2的Spark-View-Engine

Ben*_*Ben 5 asp.net asp.net-mvc spark-view-engine

如何修改ASP.NET MVC 2.0项目以使用Spark View引擎?

我试着像这里描述的那样:http: //dotnetslackers.com/articles/aspnet/installing-the-spark-view-engine-into-asp-net-mvc-2-preview-2.aspx

但不知何故,它仍然试图路由到.aspx文件.

这里是我的global.asax的代码:

public class MvcApplication : System.Web.HttpApplication
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            "Default",                                              // Route name
            "{controller}/{action}/{id}",                           // URL with parameters
            new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
        );

    }

    protected void Application_Start()
    {
        SparkViewFactory svf = new SparkViewFactory();
        PrecompileViews(svf);

        AreaRegistration.RegisterAllAreas();

        RegisterRoutes(RouteTable.Routes);
    }

    public static void PrecompileViews(SparkViewFactory svf)
    {
        var controllerFactory = svf;
        var viewFactory = new SparkViewFactory(controllerFactory.Settings);
        var batch = new SparkBatchDescriptor();
        batch
            .For<HomeController>()
            .For<AccountController>();
        viewFactory.Precompile(batch);
    }
}
Run Code Online (Sandbox Code Playgroud)

}

And*_*mer 3

http://www.simple-talk.com/community/blogs/asiemer/archive/2010/01/31/89132.aspx

我必须下载spark view引擎源代码(http://sparkviewengine.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=27600)。完成此操作后,我浏览了每个引用 1.0 版本 System.Web.Mvc 程序集并更新为引用以指向 System.Web.Mvc 2.0 的项目。从那里你可以构建解决方案(在 Visual Studio 中),你会发现一大堆测试开始失败。您可以尝试修复它们(通过添加额外的 TextWriter 参数,您会发现现在需要)。您还将看到 SparkView.cs 文件抱怨缺少参数。在 Render 方法(我下载的源代码的第 100 行)中,我必须将wrappedViewContext 的实例化更新为如下所示(将 writer 添加到参数列表的末尾):

public void Render(ViewContext viewContext, TextWriter writer)
{
    var wrappedHttpContext = new HttpContextWrapper(viewContext.HttpContext, this);

    var wrappedViewContext = new ViewContext(
        new ControllerContext(wrappedHttpContext, viewContext.RouteData, viewContext.Controller),
        viewContext.View,
        viewContext.ViewData,
        viewContext.TempData,
        writer); //  <-- add the writer to the end of the list of parameters

    ...
}
Run Code Online (Sandbox Code Playgroud)

更新代码后,您可以运行下载源根目录中的 build.cmd 脚本。构建过程将在 build/dist 文件夹中创建一个 zip 文件。获取这些新的 dll 并将它们添加到您的网站。事情应该再次正常进行。