5

SparkViewEngineで動作するようにASP.NETMVC2.0プロジェクトをどのように変更しますか?

私はここで説明されているように試しました: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);
    }
}

}

4

5 に答える 5

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.Mvc2.0を指すように更新された各プロジェクトを実行しました。そこから(ビジュアルスタジオで)ソリューションを構築でき、一連のテストが失敗し始めることがわかります。それらの修正を試みることができます(追加のTextWriterパラメーターを追加することで必要になります)。また、SparkView.csファイルがパラメーターの欠落について文句を言っていることもわかります。Renderメソッド(ダウンロードしたソースコードの100行目)では、wrappedViewContextのインスタンス化を次のように更新する必要がありました(パラメーターのリストの最後にライターを追加します)。

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

    ...
}

コードが更新されたら、ダウンロードしたソースのルートにあるbuild.cmdスクリプトを実行できます。ビルドプロセスにより、build/distフォルダーにzipファイルが作成されます。それらの新しいdllを取得し、Webサイトに追加します。物事は再び機能するはずです。

于 2010-02-01T04:33:49.487 に答える
2

Viewengineを登録する必要があります。

ViewEngines.Engines.Add(new SparkViewFactory());
于 2010-01-14T15:27:36.707 に答える
1

あなたがあなた自身を転がしたいなら、sparkviewグーグルグループに修正があります。

個人的には次のリリースを待ちます。

于 2010-01-22T12:59:37.160 に答える
0

私のglobal.asax.csにはこれが含まれています:

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()
    {
        RegisterRoutes(RouteTable.Routes);
        ViewEngines.Engines.Add(new SparkViewFactory());

    }
}

そして私のweb.configにはこれが含まれています:

<configSections>
    <section name="spark" type="Spark.Configuration.SparkSectionHandler, Spark"/>
    <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
        <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
            <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
            <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
                <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere"/>
                <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
                <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
                <section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
            </sectionGroup>
        </sectionGroup>
    </sectionGroup>
</configSections>

<spark>

    <pages>
        <namespaces>
            <add namespace="System"/>
            <add namespace="System.Collections.Generic"/>
            <add namespace="System.Linq"/>
            <add namespace="System.Web.Mvc"/>
        </namespaces>
    </pages>
</spark>
于 2010-01-14T15:30:47.087 に答える
0

サンプルはSpark-1.0.zipパッケージに付属しています。それらの1つをランダムに見ると、Global.asax.csにこれがあります

SparkEngineStarter.RegisterViewEngine();

それが役に立てば幸い。

于 2010-01-14T15:38:04.857 に答える