Сегодня я потратил добрых три часа, пытаясь преобразовать проект MvcContrib.Samples.InputBuilders, включенный в MVC Contrib , чтобы он работал с Spark View Engine , но пока не в состоянии сделать это.
Кто-нибудь знает, почему эти двое просто не ладят?
Изменения, которые я сделал
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>
(я скопировал три последних пространства имен из примера проекта.)
Ошибки, которые я получаю
В зависимости от порядка, в котором я настраиваю Spark / InputBuilder в Global.asax.cs, я получаю два разных исключения.
Если я сначала настрою InputBuilder, то Spark (код показан выше):
ошибка CS1061:
«System.Web.Mvc.HtmlHelper» не
содержит определение для «InputForm»
и нет метода расширения «InputForm»
принимая первый аргумент типа
'System.Web.Mvc.HtmlHelper' может быть
найдено (вы пропустили использование
директива или ссылка на сборку?)
Если я сначала настрою Spark, то InputBuilder:
Представление InputForm или его мастер
невозможно найти. Следующие
места были найдены:
~ / Views / Home / InputForm.aspx
~ / Views / Shared / InputForm.aspx
~ / Views / InputBuilders / InputForm.aspx
~ / Views / Home / InputForm.ascx
~ / Views / Shared / InputForm.ascx