如何在使用Glass映射器时使日期可编辑

时间:2016-08-29 14:22:17

标签: sitecore sitecore-mvc glass-mapper sitecore8.1

今天我面临一个有以下要求的问题。

  1. 日期应该是可编辑的。

  2. 日期应采用特定格式。

  3. 我的代码如下所示无效。

    foreach(var item in Model)
    {
      <div>@Editable(item,  x => x.Start_Date.ToString("MMMM dd,yyyy"))</div>
    }
    

    我尝试了以下方法,但抛出了“DateParameters”命名空间错误。

    @Editable(item, x=> x.Start_Date, new DateParameters { Format = "MMMM dd,yyyy"})
    

    我也有学习者跟随的东西,但我怎么能实现这个目标呢?

    要使字段可编辑,需要两个参数,这已用于使“日期”字段可编辑。第一个参数指示Glass.Mapper使哪个字段可编辑,第二个参数指定页面未处于页面编辑模式时输出应该是什么。这允许您在两种不同的模式下控制字段的输出。

    有人能帮助我吗?

4 个答案:

答案 0 :(得分:0)

你想要做的是提供默认格式,但保持主要玻璃的东西相同。像这样:

foreach(var item in Model)
{
    <div>@Editable(item,  x => x.Start_Date, x=>x.Start_Date.ToString("MMMM dd,yyyy"))</div>
}

这将使日期成为编辑时的正常日期,但允许您将其格式化为最终页面。

答案 1 :(得分:0)

通常在这种情况下,我使用不同的代码进行&#34; 普通视图&#34;和&#34; 体验编辑器&#34;,因此对于普通视图,您只需要在不使其可编辑的情况下显示日期格式,而在体验编辑器上,您只需要编辑日期字段作者不会关心使用经验编辑器的日期格式,所以你的代码将是这样的:

foreach(var item in Model)
{
  {
    @if (Sitecore.Context.PageMode.IsExperienceEditorEditing)
    {
      <div>@Editable(item,  x => x.Start_Date)</div>
    }
    else
    {
      <div>@item.Start_Date.ToString("MMMM dd,yyyy")</div>
    }
  }
}

答案 2 :(得分:0)

对于“体验”编辑器模式,这在剃刀视图中对我有效:

@Editable(model => model.SomeDateField, new { Format = "dd-MM-yyyy" })

Sitecore 8.2,带有Glass 4.4。

答案 3 :(得分:-2)

我也试过了,但它会抛出如下错误

**Value cannot be null. Parameter name: objectToSwitchTo

   at Sitecore.Diagnostics.Assert.ArgumentNotNull(Object argument, String argumentName)
   at Sitecore.Common.Switcher2.Enter(TValue objectToSwitchTo)
   at Glass.Mapper.Sc.GlassHtml.MakeEditable[T](Expression1 field, Expression1 standardOutput, T model, Object parameters, Context context, Database database, TextWriter writer)**

对此有何帮助?