1

今日、 MVC Contribに含まれるプロジェクト MvcContrib.Samples.InputBuilders を変換して、 Spark View Engineで動作するように3 時間費やしましたが、これまでのところ変換できませんでした。

この2人がうまくいかない理由を知っている人はいますか?

私が行った変更

InputForm.spark:

<viewdata model="SampleInput" />
!{Html.InputForm()}

Global.asax.cs:

...
protected void Application_Start() {
    RegisterRoutes(RouteTable.Routes);
    InputBuilder.BootStrap();
    ViewEngines.Engines.Clear();
    ViewEngines.Engines.Add(new SparkViewFactory());
}

Web.config:

...
<spark>
    <compilation debug="true"/>
    <pages automaticEncoding="true">
        <namespaces>
            <add namespace="System"/>
            <add namespace="System.Collections.Generic"/>
            <add namespace="System.Linq"/>
            <add namespace="System.Web.Mvc"/>
            <add namespace="System.Web.Mvc.Ajax"/>
            <add namespace="System.Web.Mvc.Html"/>
            <add namespace="System.Web.Routing"/>
            <add namespace="MvcContrib.UI.InputBuilder"/>
            <add namespace="MvcContrib.UI.InputBuilder.Views"/>
            <add namespace="Web.Models"/>
        </namespaces>
    </pages>
</spark>

(サンプル プロジェクトから最後の 3 つの名前空間をコピーしました。)

私が得ているエラー

Global.asax.cs で Spark/InputBuilder をセットアップする順序に応じて、2 つの異なる例外が発生します。

最初に InputBuilder をセットアップした場合、次に Spark (上記のコード):

エラー CS1061: 'System.Web.Mvc.HtmlHelper' には 'InputForm' の定義が含まれておらず、タイプ 'System.Web.Mvc.HtmlHelper' の最初の引数を受け入れる拡張メソッド 'InputForm' が見つかりませんでした (不足していますか? using ディレクティブまたはアセンブリ参照?)

最初に Spark をセットアップした場合、InputBuilder は次のようになります。

ビュー 'InputForm' またはそのマスターが見つかりませんでした。次の場所が検索されました。

~/Views/Home/InputForm.aspx

〜/Views/Shared/InputForm.aspx

~/Views/InputBuilders/InputForm.aspx

~/Views/Home/InputForm.ascx

~/Views/Shared/InputForm.ascx

4

2 に答える 2

2

input.sparkを次のように変更します。

<use namespace="MvcContrib.UI.InputBuilder"/>
<use namespace="MvcContrib.UI.InputBuilder.Views"/>
<add namespace="Web.Models"/>
<viewdata model="SampleInput" />
!{Html.InputForm()}

web.configへの追加はSparkでは機能しません。代わりに_global.sparkを使用できます。

別の問題もあります。安定したSparkでは、SparkViewHtmlプロパティはタイプHtmlHelperではなくタイプHtmlHelper<TModel>です。Html.InputForm()関数はに対してのみ機能HtmlHelper<TModel>します。最近変更されたため、Sparkソースをダウンロードして開発ビルドを使用する必要があります。安定したソースをダウンロードして、自分で変更することもできます。ここにいくつかの情報があります:

http://groups.google.com/group/spark-dev/browse_thread/thread/618bd44a94368d22/f7df24e52924f4dc?show_docid=f7df24e52924f4dc

于 2009-11-18T18:23:14.013 に答える
1

入力ビルダーをセットアップしてから、spark ビュー エンジンをセットアップすることで、正しい軌道に乗っています。mvccontrib のソース ファイルから、ビューが入力ビルダー HtmlHelper Extentions を参照するには、この名前空間で定義された MvcContrib.UI.InputBuilder.Views が必要であることがわかります。

http://github.com/mvccontrib/MvcContrib/blob/master/src/MVCContrib/UI/InputBuilder/Views/HtmlExtensions.cs

入力ビルダーを作成しましたが、入力ビルダーの拡張メソッドへの参照が解決されない理由を知るには、spark ビュー エンジンについて十分に知りません。

于 2009-11-17T22:29:53.450 に答える