Sitecore 8使用Glass Mapper编辑可编辑字段

时间:2015-03-27 17:35:07

标签: asp.net-mvc-5 sitecore glass-mapper sitecore-mvc sitecore8

出于某种原因,Visual Studio在视图中给出了这个错误:

  

无法将lambda表达式转换为type   'System.Linq.Expressions.Expression>'因为它不是代表   型

另外,我对lambda没有intellisense。

我确保根据这篇文章将我的MVC版本降低到5.1.0:

Sitecore glass editable cannot convert lambda expression

不幸的是,我没有直接在该帖子上发表评论所需的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>

提前感谢任何意见!

更新: 当我在webcore中提供的编译&gt;程序集中注释掉以下三行时,问题似乎就消失了。不确定这是最好的事情:

<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>

2 个答案:

答案 0 :(得分:3)

在网站的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" /-->

答案 1 :(得分:0)

对我的快速测试表明没有问题。我正在为所有组件使用最新的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>