我试图在Razor语法中使用Sitecore的Field.HasValue
属性来测试特定字段,但无论我尝试什么,该字段似乎总是错误的。
以下是我正在尝试的内容:
@{
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
阻止,因此永远不会设置phoneNumber
:这是一个错误吗?我是否错误地使用HasValue
或者我是否应该使用另一种Sitecore方法来安全地测试字段是否有值?
答案 0 :(得分:5)
此字段的最可能值来自标准值项(已继承)。
HasValue
属性仅在项目本身设置值时才返回true。
以下是HasValue
属性的实现:
public bool HasValue
{
get
{
return this.GetValue(false, false) != null;
}
}
public string GetValue(bool allowStandardValue, bool allowDefaultValue)
{
...
}
您可以检查ContainsStandardValue
属性以检查该值是否来自标准值。