Как я могу заставить конструкторы ввода (MVC Contrib) работать с движком Spark View Engine?

StackOverflow https://stackoverflow.com/questions/1750242

Вопрос

Сегодня я потратил добрых три часа, пытаясь преобразовать проект MvcContrib.Samples.InputBuilders, включенный в Вклад MVC чтобы заставить его работать с Движок просмотра 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());
}

Web.конфигурация:

...
<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' может быть найден (вам не хватает директивы using или ссылки на сборку?)

Если я сначала настрою Spark, то InputBuilder:

Представление 'InputForm' или его мастер не удалось найти.Следующие Были проведены обыски в местах:

~/Просмотры/Главная страница/InputForm.aspx

~/Просмотры/Общие/InputForm.aspx

~/Views/InputBuilders/Вводная форма.aspx

~/Просмотры/Главная страница/InputForm.ascx

~/Просмотры/Общие/InputForm.ascx

Это было полезно?

Решение

Измените 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, SparkView Html свойство имеет тип HtmlHelper, не HtmlHelper<TModel>. Html.InputForm() функция работает только для HtmlHelper<TModel>, поэтому вам придется загрузить исходный код Spark и использовать development build , поскольку он был недавно изменен.Вы также можете загрузить стабильные исходные тексты и изменить их самостоятельно.Вот некоторая информация:

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

Другие советы

Вы на правильном пути, настроив средства построения входных данных, а затем движок просмотра spark.Вы можете видеть из исходного файла из mvccontrib, что вам нужно это пространство имен, определенное MvcContrib.UI.InputBuilder.Представления для вашего представления, чтобы ссылаться на расширения input builders HtmlHelper.

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

Я написал конструкторы ввода, но я недостаточно знаю о движке spark view engine, чтобы понять, почему он не разрешает ссылку на методы расширения для конструкторов ввода.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top