1

今天我花了三个小时尝试转换MVC Contrib中包含的项目 MvcContrib.Samples.InputBuilders以使其与Spark View Engine一起使用,但到目前为止还无法这样做。

有没有人知道为什么这两个人不能相处?

我所做的更改

InputForm.spark:

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

全球.asax.cs:

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

网络配置:

...
<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>

(我从示例项目中复制了最后三个命名空间。)

我遇到的错误

根据我在 Global.asax.cs 中设置 Spark/InputBuilder 的顺序,我得到两个不同的异常。

如果我首先设置 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

您在设置输入构建器和火花视图引擎方面走在了正确的轨道上。您可以从 mvccontrib 的源文件中看到,您需要此命名空间定义的 MvcContrib.UI.InputBuilder.Views 以便您的视图引用输入构建器 HtmlHelper 扩展。

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

我编写了输入构建器,但我对 spark 视图引擎的了解还不够,无法知道为什么它没有解析对输入构建器的扩展方法的引用。

于 2009-11-17T22:29:53.450 回答