C# Sitecore项目字段值为空

C# Sitecore项目字段值为空,c#,sitecore,C#,Sitecore,以后更新 所以,我花了一些时间试图弄明白这一点,我得到了以下结论: 在sitecore.config中有一个部分,您可以在其中定义网站。当我试图设置一个自定义登录页面时,我将“loginPage”属性添加到“website”站点元素中,但它不起作用 有一次,我意识到我必须将名称从“网站”更改为“myhost_name”,登录页面开始按预期工作,但事实证明,删除“网站”网站元素并不是一个很好的主意,因为网站开始出现这种不稳定的行为 有人知道这种情况下的正确设置吗?在这件事上,我找不到需要澄清的Si

以后更新 所以,我花了一些时间试图弄明白这一点,我得到了以下结论: 在sitecore.config中有一个部分,您可以在其中定义网站。当我试图设置一个自定义登录页面时,我将“loginPage”属性添加到“website”站点元素中,但它不起作用

有一次,我意识到我必须将名称从“网站”更改为“myhost_name”,登录页面开始按预期工作,但事实证明,删除“网站”网站元素并不是一个很好的主意,因为网站开始出现这种不稳定的行为

有人知道这种情况下的正确设置吗?在这件事上,我找不到需要澄清的Sitecore文档

谢谢


我有以下问题(我是Sitecore开发的新手,所以这可能是一些简单的东西,但我无法解决)

我有一些错误消息的模板,我将在网站上显示,我在内容下有一个文件夹,我在那里存储这些项目

我在模板上添加了3个字段: -类型 -结果键 -信息

它们都是单行文本

现在,在visual studio中,我有一个例程可以执行以下操作:

/// <summary>
/// Get an Item by path
/// </summary>
public Item GetItemByPath(string itemPath)
{
    return Sitecore.Context.Database.GetItem(itemPath);
}
问题: 返回该项,所有字段都已就位,但“我的字段”的值为“”(String.Empty)

我做错了什么? 这些项目在Sitecore中具有值,并已发布(我检查了Web数据库)

上下文 Sitecore 8.1 VS 2013 MVC 5.2.3


谢谢

尝试将查询更改为:return Sitecore.Context.Database.GetItem(itemPath,Sitecore.Context.Language); 如果未指定语言,则返回的项可以使用与上下文中不同的语言,因此数据为空

致以最良好的祝愿,
Łukasz Skowroński

下面是获得空结果的可能性

  • 获取项目时未正确传递语言版本
  • 项目的路径可能不正确
  • 上下文数据库可能错误,数据可能在主数据库中,但您引用的是Web数据库
  • 尝试使用按项目ID提取项目
  • 同一项可能有不同的版本,您可能获取了错误的版本,该版本的值为空

  • 谢谢大家的建议。问题是存在另一个站点配置文件。斯蒂尔没有解释这一意外行为,但至少我解决了这个问题

    您确定您的
    itemPath
    返回了正确的项目吗?是否需要发布?首次使用时,上下文数据库是什么?您确定在前端使用的语言版本中输入了值吗?当我调试它时,我在正确的项目上,语言是预期的,上下文数据库是WEB当调试器点击GetMessageByName时,“Message”字段存在且为空?您是否尝试以管理员身份打开Sitecore并将数据库更改为web。然后找到该项目,确保消息字段中有数据。嗨,我刚刚测试过,但仍然不起作用。它必须是带有字段名称的东西。我认为有冲突或类似的事情。这可真烦人!配置问题是什么?我在同一版本上遇到了类似的问题,但排除了列出的其他可能性。
    public ModelValidation GetMessageByName(string itemName, string xpath)
    {
        var mess = GetItemByPath(xpath + itemName);
        if (mess == null) return new ModelValidation(3, itemName);
    
        int type;
        string stype = "";
        string message = "";
        mess.Fields.ReadAll();
    
        if (mess.Fields["Type"] == null)
            stype = "3";
        else
            stype = mess.Fields["Type"].Value;
        if (!int.TryParse(stype, out type))
            type = 3;
        if (String.IsNullOrEmpty(mess.Fields["Message"].Value))
            message = itemName;
        else
            message = mess.Fields["Message"].Value;
    
        return new ModelValidation(type, message);
    }