Я работаю с проектом ASP.NET MVC, который изначально был запущен из проекта CodeBetter.Canvas - и пытаюсь перейти на ASP.NET MVC 2. Я успешно обновил свой проект, используя Средство обновления Eilon перенесено в VS2010 (хотя еще не в .NET 4).
Проблема, с которой я сталкиваюсь в настоящее время, возникает только при использовании движка искрового обзора. Вот соответствующий фрагмент кода в моем View.spark (строго типизированный):
${Html.EditorFor(e => e)}
Тот же бит кода прекрасно работает , если я использую представление ASPX:
<%= Html.EditorFor(e => e) %>
Основным моментом здесь является то, что «EditorFor» является новым в ASP.NET MVC 2, и в моем проекте я могу использовать этого помощника в представлении ASPX, но не в представлении Spark.
Я пытался обновить Spark, чтобы использовать MVC 2 (а также MvcContrib и Ninject), думая, что, возможно, это был один из тех, кто был в шоке - но пока не повезло - я все еще видя такое же поведение.
Вот полное сообщение об ошибке, которое выдается из класса Spark BatchCompiler.
Ошибка компиляции динамического представления.
(0,0): предупреждение CS1701: предполагается
ссылка на сборку 'System.Web.Mvc,
Версия = 1.0.0.0, Культура = нейтральная,
PublicKeyToken = 31bf3856ad364e35'
соответствует System.Web.Mvc,
Версия = 2.0.0.0, Культура = нейтральная,
PublicKeyToken = 31bf3856ad364e35 ', вы
может потребоваться предоставить политику выполнения
C: \ Inetpub \ Wwwroot [MyProject] \ CodeBetter.Canvas.Web \ Просмотров [MyEntity] \ View.spark (9,16):
ошибка CS1061:
«System.Web.Mvc.HtmlHelper» не
содержат определение для «EditorFor»
и нет метода расширения «EditorFor»
принимая первый аргумент типа
'System.Web.Mvc.HtmlHelper' может быть
найдено (вы пропустили использование
директива или ссылка на сборку?)
Вот код, связанный с Spark, в моем Global.asax:
var settings = new SparkSettings()
.AddNamespace("System")
.AddNamespace("System.Collections.Generic")
.AddNamespace("System.Web.Mvc")
.AddNamespace("System.Web.Mvc.Html")
.AddNamespace("MvcContrib.FluentHtml")
.AddNamespace("CodeBetter.Canvas")
.AddNamespace("CodeBetter.Canvas.Web")
.SetPageBaseType("ApplicationViewPage")
.SetAutomaticEncoding(true);
#if DEBUG
settings.SetDebug(true);
#endif
var viewFactory = new SparkViewFactory(settings);
ViewEngines.Engines.Add(viewFactory);
Кроме того, я ссылаюсь на System.Web.Mvc.Html в моем представлении искры, как упоминалось в другом ответе SO .
<use namespace="System.Web.Mvc.Html" />