我正在使用最初从CodeBetter.Canvas项目启动的ASP.NET MVC项目 - 我试图转移到ASP.NET MVC 2.我成功升级我的项目使用Eilon's upgrade tool,转移到VS2010(虽然还没有到.NET 4)。在火花视图引擎中使用asp.net mvc 2功能
我目前遇到的问题只发生在使用火花视图引擎时。这里是代码我View.spark(强类型)的相关位:
${Html.EditorFor(e => e)}
的代码作品就好了相同的位,如果我用一个.aspx视图:
<%= Html.EditorFor(e => e) %>
的这里的主要观点是“EditorFor”在ASP.NET MVC 2中是新的,在我的项目中,我可以在ASPX视图中使用该助手,但不能使用Spark视图。
我试过upgrading Spark to use MVC 2(以及MvcContrib和Ninject),觉得也许这是一个吓坏了 - 但到目前为止没有运气 - 我仍然看到相同的行为。
以下是Spark的BatchCompiler类中引发的完整错误消息。
动态视图编译失败。 (0,0):警告CS1701:假设 集引用 'System.Web.Mvc, 版本= 1.0.0.0,文化=中性 公钥= 31bf3856ad364e35' 匹配“System.Web.Mvc, 版本= 2.0 .0.0,Culture = neutral, PublicKeyToken = 31bf3856ad364e35',you may need to provide runtime policy c:\ inetpub \ wwwroot [myproject] \ CodeBetter.Canvas.Web \ Views [MyEntity] \ View.spark(9,16 ): 错误CS1061: “System.Web.Mvc.HtmlHelper”不 包含关于“EditorFor” 定义和没有扩展方法“EditorFor” 接受 类型“的第一个参数System.W eb.Mvc.HtmlHelper”可能是 (是否缺少using 指令或程序集引用?)
这里是我的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);
而且,我在我的spark视图中引用System.Web.Mvc.Html,如in another SO answer所述。
<use namespace="System.Web.Mvc.Html" />
我想这里真正的问题是,我误以为版本我正在使用的MVCContrib的版本是使用system.web.mvc.dll的2.0.0版 - 它不是!扯淡!更新之后,spark和ninject - 它的工作原理! – 2009-12-05 22:11:46