首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Sitecore().Field()格式化Date数据()?

使用Sitecore().Field()格式化Date数据()?
EN

Stack Overflow用户
提问于 2015-12-25 22:42:00
回答 4查看 7.2K关注 0票数 5

我需要对日期使用自定义格式(即dddd dd MMMM yyyy)。是否可以将此格式传递给Sitecore().Field()?我想做这样的事情:

@Html.Sitecore().Field("Day1", new { @format="dddd dd MMMM yyyy"})

然而,在谷歌搜索之后,我发现我要么创建一个定制的字段助手来完成这个任务,要么创建一个自定义模型。真的没有办法用基座教堂做这件事吗?通过Sitecore().Field()完成这一点很重要,因为我需要内容编辑器才能编辑值。

我们在塞特科雷7.5号

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-12-26 06:43:13

据我所知,Sitecore并没有这样的功能。您可以使用此功能的助手,请检查下面的代码。我使用了这段代码,而且运行良好。您也可以从页面编辑器中编辑日期字段,因为该字段是通过Sitecore管道编辑的。

代码语言:javascript
复制
public static class Helper
{

    public static HtmlString RenderField(
      this SC.Mvc.Helpers.SitecoreHelper sitecoreHelper,
      string fieldNameOrId,
      bool disableWebEdit = false,
      SC.Collections.SafeDictionary<string> parameters = null)
    {
        if (parameters == null)
        {
            parameters = new SC.Collections.SafeDictionary<string>();
        }

        return sitecoreHelper.Field(
          fieldNameOrId,
          new
            {
                DisableWebEdit = disableWebEdit,
                Parameters = parameters
            });
    }

    public static HtmlString RenderField(
      this SC.Mvc.Helpers.SitecoreHelper sitecoreHelper,
      SC.Data.ID fieldId,
      bool disableWebEdit = false,
      SC.Collections.SafeDictionary<string> parameters = null)
    {
        return RenderField(
          sitecoreHelper,
          fieldId.ToString(),
          disableWebEdit,
          parameters);
    }

    public static HtmlString RenderDate(
      this SC.Mvc.Helpers.SitecoreHelper sitecoreHelper,
      string fieldNameOrId,
      string format = "D",
      bool disableWebEdit = false,
      bool setCulture = true,
      SC.Collections.SafeDictionary<string> parameters = null)
    {
        if (setCulture)
        {
            Thread.CurrentThread.CurrentUICulture =
              new CultureInfo(SC.Context.Language.Name);
            Thread.CurrentThread.CurrentCulture =
              CultureInfo.CreateSpecificCulture(SC.Context.Language.Name);
        }

        if (parameters == null)
        {
            parameters = new SC.Collections.SafeDictionary<string>();
        }

        parameters["format"] = format;
        return RenderField(
          sitecoreHelper,
          fieldNameOrId,
          disableWebEdit,
          parameters);
    }

    public static HtmlString RenderDate(
      this SC.Mvc.Helpers.SitecoreHelper sitecoreHelper,
      SC.Data.ID fieldId,
      string format = "D",
      bool disableWebEdit = false,
      bool setCulture = true,
      SC.Collections.SafeDictionary<string> parameters = null)
    {
        return RenderDate(
          sitecoreHelper,
          fieldId.ToString(),
          format,
          disableWebEdit,
          setCulture,
          parameters);
    }

    public static HtmlString TagField(
      this SC.Mvc.Helpers.SitecoreHelper sitecoreHelper,
      string fieldNameOrId,
      string htmlElement,
      bool disableWebEdit = false,
      SC.Collections.SafeDictionary<string> parameters = null)
    {
        SC.Data.Items.Item item =
          SC.Mvc.Presentation.RenderingContext.Current.ContextItem;

        if (item == null || String.IsNullOrEmpty(item[fieldNameOrId]))
        {
            return new HtmlString(String.Empty);
        }

        string value = sitecoreHelper.RenderField(
          fieldNameOrId,
          disableWebEdit,
          parameters).ToString();
        return new HtmlString(String.Format(
          "<{0}>{1}</{0}>",
          htmlElement,
          value));
    }

    public static HtmlString TagField(
      this SC.Mvc.Helpers.SitecoreHelper sitecoreHelper,
      SC.Data.ID fieldId,
      string htmlElement,
      bool disableWebEdit = false,
      SC.Collections.SafeDictionary<string> parameters = null)
    {
        return TagField(
          sitecoreHelper,
          fieldId.ToString(),
          htmlElement,
          disableWebEdit,
          parameters);
    }
}

在cshtml中,您将拥有:

代码语言:javascript
复制
       @Html.Sitecore().RenderDate("Name of field or id", "your format")

约翰·韦斯特在这里写了关于如何扩展sitecore助手的文章:http://www.sitecore.net/learn/blogs/technical-blogs/john-west-sitecore-blog/posts/2012/06/sitecore-mvc-playground-part-4-extending-the-sitecorehelper-class.aspx

票数 4
EN

Stack Overflow用户

发布于 2019-02-22 16:57:08

您可以使用以下字段呈现语法对日期进行格式化,这很容易,而且是现成的。

代码语言:javascript
复制
@Html.Sitecore().Field("Date Field", new {format="MMM dd, yyyy"})

就这样。格式值利用了标准日期格式规范

票数 4
EN

Stack Overflow用户

发布于 2020-03-17 09:41:44

对于那些在处理空格时有问题的人,只需将所有空格替换为"\n“。

这里有一个例子:

代码语言:javascript
复制
@Html.Sitecore().Field(datefield, new {format="MMM\ndd,\nyyyy"})
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34467044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档