自动增量/标识自定义字段类型

时间:2014-09-25 16:11:59

标签: c# sitecore sitecore6

我目前正在实施一个系统,其中有用户生成的项目,我们可以称之为订单。我希望有一个字段(非GUID),客户可以通过电话轻松说出或写下代表他们订单的字段。该领域应该简单而独特,这让我想到了一个身份领域。项目的GUID的一部分,比如10个字符,是否足够独特?如何在Sitecore中实现这样的独特字段?

GUID是字母数字,这对我的情况很好,但是太长了。目前我这样做的例子可能是103143317(商店103,下午2:33.17)

版本:Sitecore 6.6

2 个答案:

答案 0 :(得分:0)

您可以使用以下代码:

static string uniqueCode()
{
    string characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#";
    string ticks = DateTime.UtcNow.Ticks.ToString();
    var code = "";
    for (var i = 0; i < characters.Length; i += 2)
    {
        if ((i + 2) <= ticks.Length)
        {
            var number = int.Parse(ticks.Substring(i, 2));
            if (number > characters.Length - 1)
            {
                var one = double.Parse(number.ToString().Substring(0, 1));
                var two = double.Parse(number.ToString().Substring(1, 1));
                code += characters[Convert.ToInt32(one)];
                code += characters[Convert.ToInt32(two)];
            }
            else
                code += characters[number];
        }
    }
    return code;
}

此代码将根据通用时间戳标记生成唯一代码/密钥。

link

中的详细信息

答案 1 :(得分:0)

您可以通过自定义令牌而不是自定义字段来实现此目的。我已经在这里回答了类似的问题:Sitecore - Custom field, add unique value on create

基本上,您将创建自定义标记并在其中添加生成算法。您可以使用Guid.NewGuid()对其应用某种哈希值,并根据需要选择任意数量的字符。