1

我正在使用以下代码来可视化电子邮件中的不同信息。

   this.velocityContext.Put("args", args);
            this.velocityContext.Put("item", args.DataItem); 
            this.velocityContext.Put("processor", args.ProcessorItem);
            this.velocityContext.Put("user", Context.User); 
            this.velocityContext.Put("history", args.DataItem.State.GetWorkflow().GetHistory(args.DataItem));
            this.velocityContext.Put("state", args.DataItem.State.GetWorkflowState());
            this.velocityContext.Put("nextState", this.GetNextState(args));
            this.velocityContext.Put("site", Context.Site);
            this.velocityContext.Put("time", DateTime.Now);
            this.velocityContext.Put("previewUrl",string.Format("Http://{0}/?sc_itemid=%7b{1}%7d&sc_mode=preview",Context.Site.HostName,args.DataItem.ID.Guid));

previewUrl 的值不起作用。Context.Site.HostName 始终为空。有人知道是什么原因吗?或者是否有另一种方法来建立必须由内容所有者审查/批准或拒绝的文章链接?

谢谢,

4

1 回答 1

0

如果您的代码在工作流中执行,它会在 Shell 站点上下文中执行,这不会为您提供您正在寻找的站点上下文或主机名。您需要解析该项目所属的站点,并从中获取主机名。

从这里获取 LinkHelper 类: http ://webcmd.wordpress.com/2011/11/30/multiple-sites-with-one-authoring-domain-in-sitecore/

使用 LinkHelper 确定给定项目的站点。然后从返回的 SiteInfo 中获取 HostName。

于 2012-11-13T17:51:19.317 回答