首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sensenet DateTime字段默认值

Sensenet DateTime字段默认值
EN

Stack Overflow用户
提问于 2016-11-30 10:49:34
回答 2查看 103关注 0票数 1

当DateTime字段为空时,Sensenet在内容浏览模式中显示(系统默认值)‘01/01/ 12:00’。因为它不是用户输入的,所以它不能显示值吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-17 01:59:36

您还可以使用内容处理程序中的服务器端代码来解决这个问题。

如果实例化一个新的DateTime对象,它的默认值是1/1/0001 12:00:00 AM,也指定为DateTime.MinValueDateTime.MaxValue12/31/9999 11:59:59 PM。然后测试DateTime.MinValue以解决格式化问题。

如果您有很多格式化和显示日期的内容,那么在(CTD)中定义一个与日期字段相对应的字符串字段通常更简单。例如,您的CTD可能有这样的字段:

代码语言:javascript
复制
<Field name="ReviewDate" type="DateTime" >
  <DisplayName>Review Date</DisplayName>
</Field>

<Field name="ReviewDateStr" type="ShortText" >
  <DisplayName>Review Date</DisplayName>
</Field>

然后,在内容处理程序中,创建一个只读getter来显示ReviewDate:

代码语言:javascript
复制
private const string REVIEWDATESTRPROPERTY = "ReviewDateStr";
[RepositoryProperty(REVIEWDATESTRPROPERTY, RepositoryDataType.String)]
public virtual string ReviewDateStr
{
    get
    {
        if (ReviewDate == DateTime.MinValue)
        {
            return "n/a";      // Default string if date is not set.
        }
        return ReviewDate.ToString();   // Add date formatting here.
    }
}

或者,您可以创建一个现场控制来完成同样的任务。

票数 1
EN

Stack Overflow用户

发布于 2016-11-30 12:01:40

DateTime字段的默认值不能为空,因此如果要将其隐藏在浏览视图中,可以使用脚本检查日期时间值,如果它包含01/01/01,则只需在浏览器中使用js删除/隐藏它。还有一个帮助函数来格式化日期(SN.Util.js 'setFriendlyLocalDate'),它也用默认值来处理这个问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40886388

复制
相关文章

相似问题

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