Verwenden der Funktionen von asp.net mvc 2 mit der Spark-View-Engine
Ich arbeite mit einem ASP.NET MVC-Projekt, das ursprünglich von der gestartet wurdeCodeBetter.Canvas Projekt - und ich versuche, zu ASP.NET MVC 2 zu wechseln. Ich habe mein Projekt mit erfolgreich aktualisiertEilons Upgrade-Tool, zu VS2010 verschoben (obwohl noch nicht zu .NET 4).
Das Problem, das ich derzeit habe, tritt nur bei Verwendung der Spark-View-Engine auf. Hier ist der relevante Code in meinem View.spark (stark typisiert):
${Html.EditorFor(e => e)}
Das gleiche Stück Codefunktioniert gut Wenn ich eine ASPX-Ansicht verwende:
<%= Html.EditorFor(e => e) %>
Das Wichtigste dabei ist, dass "EditorFor" neu in ASP.NET MVC 2 ist. In meinem Projekt kann ich diesen Helfer in einer ASPX-Ansicht, aber nicht in einer Spark-Ansicht verwenden.
ich habe es versuchtUpgrade von Spark auf MVC 2 (sowie MvcContrib und Ninject), vielleicht war es einer von denen, die ausgeflippt sind - aber bisher kein Glück - ich sehe immer noch dasselbe Verhalten.
Hier ist die vollständige Fehlermeldung, die in der BatchCompiler-Klasse von Spark ausgegeben wird.
Dynamische Ansichtskompilierung fehlgeschlagen. (0,0): Warnung CS1701: Unter Annahme der Assemblyreferenz "System.Web.Mvc, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35" stimmt mit "System.Web.Mvc, Version = 2.0.0.0, Culture = neutral" überein , PublicKeyToken = 31bf3856ad364e35 ', müssen Sie möglicherweise die Laufzeitrichtlinie c: \ inetpub \ wwwroot [myproject] \ CodeBetter.Canvas.Web \ Views [MyEntity] \ View.spark (9,16): Fehler CS1061:' System.Web .Mvc.HtmlHelper 'enthält keine Definition für' EditorFor 'und es wurde keine Erweiterungsmethode' EditorFor 'gefunden, die ein erstes Argument vom Typ' System.Web.Mvc.HtmlHelper 'akzeptiert (fehlt eine using-Direktive oder eine Assembly-Referenz?) ?)
Hier ist der Spark-bezogene Code in meinem 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);
Außerdem verweise ich in meiner Spark-Ansicht wie erwähnt auf System.Web.Mvc.Htmlin einer anderen SO Antwort.
<use namespace="System.Web.Mvc.Html" />