使用asp.net 视2拥有的火花视引擎
-
05-07-2019 - |
题
我的工作ASP.NET 视项目,该项目最初是开始从 CodeBetter.画布 项目-而我试图转移到ASP.NET 视2.我成功升级了我的项目使用 Eilon的升级工具, 搬到VS2010(虽然还没有到。净4).
这个问题我有目前只是在发生时使用的火花视的发动机。这里是相关的代码在我的观点。火花(强类型):
${Html.EditorFor(e => e)}
相同的代码 工作就好了 如果我使用。aspx查看:
<%= Html.EditorFor(e => e) %>
主要的一点是"EditorFor"是新的ASP.NET 视2和我的项目,我可以使用,帮助在ASPX的看法,但没有火花图。
我已经试过了 升级的火花到使用视2 (以及MvcContrib,而),思考可能是那些被吓坏了-但迄今为止没有运气-我还看到同样的行为。
这里是完全错误信息,扔在火花的BatchCompiler类。
动态图汇编的失败。(0,0):警告CS1701:假设 大会参考'系统。网。视, Version=于1.0.0.0、文化=中性, 公钥=31bf3856ad364e35' 比赛'的系统。网。视, Version=2.0.0.0、文化=中性, 公钥=31bf3856ad364e35你 可能需要提供运行时的政策 c:\inetpub\入口脚本的目录[myproject]\CodeBetter.画布上。网\意见[MyEntity]\图。火花(9、16)的:错误CS1061:'系统。网。视.HtmlHelper'不 包含一个定义为'EditorFor' 并没有扩展的方法'EditorFor' 接受第一个参数的类型 '系统。网。视.HtmlHelper'可能是 发现了(你是缺少一个使用的 指令,或一个大会参考?)
这里是火花相关代码在我的全球性的。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 在我的火花视为提及 在另一个这样的回答.
<use namespace="System.Web.Mvc.Html" />
解决方案
根本的问题是,一个版本1.0.0会仍然是被引用的地方,在该项目。
使用 反射器 审查每一个集会的依赖关系,我发现(如果你开始与CodeBetter.帆布项目)有 三 依赖项目需要更新的使用2.0.0版的system.web.mvc.dll
火花.下载最新的版本 火花从teamcity和使用 spark.web.mvc2.dll (参考文献 system.web.mvc.dll 2.0.0时) 链接的详细说明。
MVCContrib.下载最新的版本 的MVCContrib(下载释放, 下载源)引用的 system.web.mvc.dll 2.0.0时.
而. 下载最新版本的 而 并重新编译VS解决方案 更新后的参照2.0.0 版本的system.web.mvc.dll
现在,替换这些依赖大会在项目和更新的项目引用,如果有必要的。所有应。
其他提示
我最近将我的spark项目转换为asp.net mvc 2.我没看到你写的是你已经从使用Spark.Web.Mvc切换到Spark.Web.Mvc2。
为了清楚起见,Spark.Web.Mvc2是需要使用新的System.Web.Mvc程序集重新编译的项目。
我遇到了intellisense问题,直到我从web.config中删除了所有程序集和命名空间引用并将它们放在global.spark文件中并添加了pageBaseType =&quot; Spark.Web.Mvc2.SparkView&quot;属性为web.config中的Spark-&gt; Pages节点。
希望任何有用的东西。
当您下载最新的Spark源时,是否使用MVC 2程序集重建它?您是否替换了Spark项目中的引用?
尝试在web.config中指定System.Web.Mvc引用而不是Global.ascx.cs文件,以便您可以指定特定版本:
<spark>
<compilation debug="true" defaultLanguage="CSharp">
<assemblies>
<add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</assemblies>
</compilation>
</spark>
如果从某处加载了错误版本的MVC程序集,这应该可以防止SPARK工作。
如果MVC 1.0程序集在GAC中,您可以按如下方式清除并重新加载:
(来自Visual Studio命令提示符)
ngen /delete System.Web.Mvc
ngen /delete System.Web.Abstractions
ngen update
希望这有帮助,
杰夫法语
这些是我用新的MVC 2项目和Spark 1.1解决问题的步骤:
-
编译MVC 2.0 - 我仔细检查了引用,以确保我链接到MVC 2而不是MVC 1.由于这是一个新项目,这不是问题。
-
添加了System.Web.Mvc.Html - 我将System.Web.Mvc.Html添加到Spark配置中,以确保将命名空间添加到所有视图。
在Global.asax.cs Application_Start
中var settings = new SparkSettings() .SetDebug(true) .SetAutomaticEncoding(true) .AddAssembly("Web") .AddNamespace("Web.Model") .AddNamespace("System.Collections.Generic") .AddNamespace("System.Linq") .AddNamespace("System.Web.Mvc") .AddNamespace("System.Web.Mvc.Html");
这也可以在Spark View Engine块中的webconfig中完成。
-
添加类型化模型 - 确保键入Spark View模型。在aspx中,这是通过页面声明中的Inherits完成的,如下所示:
Spark中的<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MyModelType>" %>
:
<viewdata model="MyModelType" />
醇>
我尝试了很多上面提到的东西,但是无法获得我的视图使用的依赖dll(并且还引用了MVC 1.0.0.0)来使用MVC 2.0.0.0,所以这里是为我修复它的原因。 ..
我下载了Spark代码并将以下行添加到Compile方法中的BatchCompiler.cs文件中:
compilerParameters.CompilerOptions = "/nowarn:1701";