我的工作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

  1. 火花.下载最新的版本 火花从teamcity和使用 spark.web.mvc2.dll (参考文献 system.web.mvc.dll 2.0.0时) 链接的详细说明。

  2. MVCContrib.下载最新的版本 的MVCContrib(下载释放, 下载源)引用的 system.web.mvc.dll 2.0.0时.

  3. . 下载最新版本的 而 并重新编译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解决问题的步骤:

  1. 编译MVC 2.0 - 我仔细检查了引用,以确保我链接到MVC 2而不是MVC 1.由于这是一个新项目,这不是问题。

  2. 添加了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中完成。

  3. 添加类型化模型 - 确保键入Spark View模型。在aspx中,这是通过页面声明中的Inherits完成的,如下所示:

    <%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master"
    Inherits="System.Web.Mvc.ViewPage<MyModelType>" %>
    
    Spark中的

    <viewdata model="MyModelType" />
    

我尝试了很多上面提到的东西,但是无法获得我的视图使用的依赖dll(并且还引用了MVC 1.0.0.0)来使用MVC 2.0.0.0,所以这里是为我修复它的原因。 ..

我下载了Spark代码并将以下行添加到Compile方法中的BatchCompiler.cs文件中:

compilerParameters.CompilerOptions = "/nowarn:1701";
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top