由于某种原因,Visual Studio在视图中给了我这个错误:
无法将Lambda表达式转换为类型'System.Linq.Expressions.Expression>',因为它不是委托类型
另外,我在lambda上没有智能感知。
根据这篇文章,我确保将我的MVC版本降至5.1.0:
Sitecore Glass可编辑无法转换Lambda表达式
不幸的是,我没有需要直接在该帖子上发表评论的Stack Overflow点。遗憾的是,MVC版本解决方案对我不起作用。当我发布进行部署时,数据可以很好地通过-编辑工作就可以了-但是我宁愿不只是忽略红色的波浪线和缺乏智能感。
在全新的Sitecore 8 / Visual Studio MVC应用程序设置中,我运行了:
更新包Glass.Mapper.Sc.CastleWindsor给我v3.3.1.26
然后我运行Install-Package Glass.Mapper.Sc.Mvc-5给我v3.3.1.48
我建立了一个模型
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Glass.Mapper.Sc;
using Glass.Mapper.Sc.Configuration.Attributes;
namespace myns.app.Models
{
[SitecoreType]
public class BaseContent
{
[SitecoreId]
public virtual Guid Id { get; set; }
[SitecoreField("Content Title")]
public virtual string Title { get; set; }
[SitecoreField("Summary Content")]
public virtual string Summary { get; set; }
[SitecoreField("Full Content")]
public virtual string Content { get; set; }
[SitecoreField("Content Image")]
public virtual Glass.Mapper.Sc.Fields.Image ImagePath { get; set; }
}
}
并具有某种工作视图
@inherits Glass.Mapper.Sc.Web.Mvc.GlassView<myns.app.Models.BaseContent>
<div>
<h4>BaseContent</h4>
<hr />
@Model.Title
<p>@Editable(Model, x => x.Title)</p>
<p>@Editable(Model, x => x.Summary)</p>
<h5>content</h5>
<p>@Editable(Model, x => x.Content)</p>
<p>@RenderImage(Model, x => x.ImagePath)</p>
</div>
在此先感谢您的任何投入!
更新:当我在Sitecore提供的web.config中的compiling > assembly中注释掉以下三行时,问题似乎消失了。不确定这是最好的做法:
<compilation defaultLanguage="c#" debug="false" targetFramework="4.5">
<assemblies>
<add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
<add assembly="System.Web.Helpers, Version=3.0.0.0, Culture=neutral,PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.Mvc, Version=5.2.2.0, Culture=neutral,PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.WebPages, Version=3.0.0.0, Culture=neutral,PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral,PublicKeyToken=31BF3856AD364E35" />
<!--add assembly="System.Web.Http, Version=5.1.0.0, Culture=neutral,PublicKeyToken=31BF3856AD364E35" /-->
<!--add assembly="System.Web.Http.WebHost, Version=5.1.0.0, Culture=neutral,PublicKeyToken=31BF3856AD364E35" /-->
<!--add assembly="System.Net.Http.Formatting, Version=5.1.0.0, Culture=neutral,PublicKeyToken=31BF3856AD364E35" /-->
</assemblies>
</compilation>
在站点的web.config中的Assemblys节点中注释掉以下三行,可以解决此问题。
<!--add assembly="System.Web.Http, Version=5.1.0.0, Culture=neutral,PublicKeyToken=31BF3856AD364E35" /-->
<!--add assembly="System.Web.Http.WebHost, Version=5.1.0.0, Culture=neutral,PublicKeyToken=31BF3856AD364E35" /-->
<!--add assembly="System.Net.Http.Formatting, Version=5.1.0.0, Culture=neutral,PublicKeyToken=31BF3856AD364E35" /-->
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句