我目前正在实施一个系统,其中有用户生成的项目,我们可以称之为订单。我希望有一个字段(非GUID),客户可以通过电话轻松说出或写下代表他们订单的字段。该领域应该简单而独特,这让我想到了一个身份领域。项目的GUID的一部分,比如10个字符,是否足够独特?如何在Sitecore中实现这样的独特字段?
GUID是字母数字,这对我的情况很好,但是太长了。目前我这样做的例子可能是103143317(商店103,下午2:33.17)
版本:Sitecore 6.6
答案 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()对其应用某种哈希值,并根据需要选择任意数量的字符。