使用 Glass Mapper 的 Sitecore 8 可编辑字段
Sitecore 8 Editable fields with Glass Mapper
出于某种原因 Visual Studio 在视图中给我这个错误:
Cannot convert lambda expression to type
'System.Linq.Expressions.Expression>' because it is not a delegate
type
此外,我在 lambda 上没有智能感知。
我确保基于此 post:
将我的 MVC 版本降低到 5.1.0
Sitecore glass editable cannot convert lambda expression
不幸的是,我没有直接评论 post 所需的 Stack Overflow 分数。不幸的是,MVC 版本的解决方案对我不起作用。当我发布部署时,数据通过得很好——编辑工作得很好——但我不想只忽略红色波浪线和智能感知的缺乏。
从新的 Sitecore 8/Visual Studio MVC 应用程序设置,我 运行:
更新包Glass.Mapper.Sc.CastleWindsor给我v3.3.1.26
那我运行安装包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>
提前感谢任何输入!
更新:
当我注释掉 compilation>assemblies 中 web.config Sitecore 提供的以下三行时,问题似乎消失了。不确定这是最好的做法:
<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>
我的快速测试表明没有问题。我为所有组件使用最新的 Glass 版本。确保在 web.config 和 /views/web.config:
中都有正确的程序集绑定重定向
<dependentAssembly>
<assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
</dependentAssembly>
在站点 web.config 的程序集节点中注释掉以下三行解决了这个问题。
<!--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" /-->
出于某种原因 Visual Studio 在视图中给我这个错误:
Cannot convert lambda expression to type 'System.Linq.Expressions.Expression>' because it is not a delegate type
此外,我在 lambda 上没有智能感知。
我确保基于此 post:
将我的 MVC 版本降低到 5.1.0Sitecore glass editable cannot convert lambda expression
不幸的是,我没有直接评论 post 所需的 Stack Overflow 分数。不幸的是,MVC 版本的解决方案对我不起作用。当我发布部署时,数据通过得很好——编辑工作得很好——但我不想只忽略红色波浪线和智能感知的缺乏。
从新的 Sitecore 8/Visual Studio MVC 应用程序设置,我 运行:
更新包Glass.Mapper.Sc.CastleWindsor给我v3.3.1.26
那我运行安装包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>
提前感谢任何输入!
更新: 当我注释掉 compilation>assemblies 中 web.config Sitecore 提供的以下三行时,问题似乎消失了。不确定这是最好的做法:
<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>
我的快速测试表明没有问题。我为所有组件使用最新的 Glass 版本。确保在 web.config 和 /views/web.config:
中都有正确的程序集绑定重定向 <dependentAssembly>
<assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
</dependentAssembly>
在站点 web.config 的程序集节点中注释掉以下三行解决了这个问题。
<!--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" /-->