Отсутствующие методы расширения в HtmlHelper с использованием NHaml - PullRequest
2 голосов
/ 09 июля 2010

Я обнаружил NHaml несколько дней назад, и это отличный проект.

Когда я пытаюсь использовать помощники MVC2 Html, такие как Html.LabelFor () , Html.TextBoxFor ();представления не будут компилироваться.

Пример:

error CS1061: 'System.Web.Mvc.HtmlHelper' does not contain a definition for 'LabelFor' and no extension method 'LabelFor' accepting a first argument of type 'System.Web.Mvc.HtmlHelper' could be found (are you missing a using directive or an assembly reference?)
0185:         textWriter.Write("              ");
0185:         textWriter.Write(Convert.ToString(Html.LabelFor(model => model.Username)));
0187:         textWriter.WriteLine();

error CS1061: 'System.Web.Mvc.HtmlHelper' does not contain a definition for 'TextBoxFor' and no extension method 'TextBoxFor' accepting a first argument of type 'System.Web.Mvc.HtmlHelper' could be found (are you missing a using directive or an assembly reference?)
0194:         textWriter.Write("              ");
0194:         textWriter.Write(Convert.ToString(Html.TextBoxFor(model => model.Username)));
0196:         textWriter.WriteLine();

Я пытался добавить сборки и пространства имен в раздел nhaml Web.config, но это ничего не меняет.

Я использую:

  • System.Web.Mvc 2.0
  • .NET Framework 3.5 SP1
  • Nhaml 1.5.0.2 из git trunk (и пробовал другиеbuilds)

Моя конфигурация NHaml:

<nhaml autoRecompile="true" templateCompiler="CSharp3" encodeHtml="false" useTabs="false" indentSize="2">

Ответы [ 3 ]

1 голос
/ 18 июля 2010

Проблема в том, что класс представления содержит неуниверсальный HtmlHelper.Или для некоторых новых методов расширения требуется тип ViewData.Model.

Чтобы исправить эту проблему, измените свойство и создание экземпляра в NHaml.Web.Mvc / NHamlMvcView.cs.

//public HtmlHelper Html { get; protected set; } // line 42
public HtmlHelper<TModel> Html { get; protected set; }

//Html = new HtmlHelper( viewContext, this ); // line 37
Html = new HtmlHelper<TModel>( viewContext, this );

Перестройте ииспользовать:)

1 голос
/ 11 июля 2010

Похоже, у вас есть проблема со сборкой.

Вы, вероятно, ссылаетесь на сборки MVC 1.0 вместо сборок 2.0?

0 голосов
/ 12 июля 2010

Насколько я вижу, новые помощники MVC не поддерживаются, на самом деле только ограниченное количество HtmlHelpers является именно LinkExtensions.Как дикое предположение, вы можете попытаться добавить LabelExtensions к настройке NHenl viewengine в файле NHaml.Web.Mvc/NHamlMvcViewEngine.cs (поскольку у вас есть источник) и проверить, работает ли это.

...