gpt4 book ai didi

c# - Sitecore 的 Field.HasValue 返回 false,即使有值?

转载 作者:太空狗 更新时间:2023-10-29 21:32:45 24 4
gpt4 key购买 nike

我试图在 Razor 语法中使用 Sitecore 的 Field.HasValue 属性来测试特定字段,但无论我尝试什么,该字段似乎总是错误的。

  • 我正在使用 Sitecore 8。
  • Sitecore 字段,“标题编号” 是一个单行文本字段

这是我正在尝试的:

@{
var phoneNumber = "";
var numberField = Model.Item.Fields["Header Number"];
if (numberField != null && numberField.HasValue)
{
phoneNumber = numberField.Value;
}
}

如下图所示:

  • numberField 已正确设置为 Sitecore 字段
  • numberField.HasValue 报告 false
  • 但是 numberField.Value 是(正确地)返回字段的值
  • 由于未能触发 if block ,因此永远不会设置 phoneNumber:

Screenshot of Breakpoint showing variable values

这是一个错误吗?我是在错误地使用 HasValue 还是应该使用另一种 Sitecore 方法来安全地测试字段是否具有值?

最佳答案

此字段的值很可能来自标准值项(继承)。

HasValue 属性仅当在项目本身上设置值时才返回 true。

下面是 HasValue 属性的实现:

public bool HasValue
{
get
{
return this.GetValue(false, false) != null;
}
}

public string GetValue(bool allowStandardValue, bool allowDefaultValue)
{
...
}

您可以检查 ContainsStandardValue 属性来检查该值是否来自标准值。

关于c# - Sitecore 的 Field.HasValue 返回 false,即使有值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35647588/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com