我正在进行Sitecore 8.1安装.我正在尝试使用droptree字段来允许内容编辑者从项目树中选择一个项目(数据模板A).保证有效选择的每个项目具有不同数据模板的一个或多个子项目(数据模板B).根据文档,这应该很容易做到:只需将源设置为参数化数据源:
Datasource=/sitecore/Media Library/Images/Folder&IncludeTemplatesForDisplay=Data Template A
Run Code Online (Sandbox Code Playgroud)
或查询:
query:/sitecore/Media Library/Images/Folder/*[@@templatename='Data Template A']
Run Code Online (Sandbox Code Playgroud)
但是出于某种原因,该领域似乎忽略了除了路径之外的任何事情.它将显示树的正确部分,但显示所有项目(包括数据模板B的项目)并允许选择它们.我尝试过各种各样的排列[Exclude|Include]TemplatesFor[Selection|Display],其中没有一种被证明是有效的.我也试着从查询中使用不包括B [@@templatename!='Data Template B']或这两种方法有templateid.
除了偶尔模糊地提到droptree不尊重排除外,我还没有找到很多关于此的信息.常见的解决方案似乎是使用带有正则表达式验证的TreeList将其限制为一个选择.这种方法是足够的,但不是真的什么我宁愿:该UI的TreeList是单一选择,有点不可思议,我宁愿只是不允许用户选择在所有多个项目,而不是抛出一个验证错误时,他们做.
我可以使用其他几个字段来尊重排除但不提供树视图:再次,可维护但不是想法,因为这里可能有很多项目,树视图为用户提供了一些有用的上下文.
我可能会写一个模仿Droptree的新字段类型,但实际上是为了尊重排除 - 而且我很顽固,这可能是我采取的路线 - 但我想首先检查以确保我不仅仅是失踪一些东西.所以这就是问题:在我继续编写自己的问题之前,有人知道一种方法可以使Droptree荣获ExcludeTemplatesForSelection/Display或者通过查询过滤吗?
我的方法以字符串形式接收 URI,并尝试将其解析为可预测且一致的格式。传入的 URL 可以是绝对的 ( http://www.test.com/myFolder ) 或相对的 (/myFolder)。绝对 URI 很容易使用,但我遇到了一些使用相对 URI 的绊脚石。最值得注意的是,尽管 for 的构造函数Uri允许您使用UriKind.Relative(或UriKind.RelativeOrAbsolute)指定相对 URI ,但在您执行此操作时它似乎没有任何可用的属性。
具体来说,它抛出这个异常: System.InvalidOperationException : This operation is not supported for a relative URI.
您将无法访问Scheme或Authority属性是有道理的- 尽管它们实际上抛出无效的操作异常而不是仅返回空白字符串似乎很奇怪 - 但即使属性喜欢PathAndQuery或Fragment表现出相同的行为。事实上,几乎唯一不会为相对 URI 抛出异常的属性是IsX标志 and OriginalString,它只显示您首先传递给对象的字符串。
鉴于该构造函数明确允许您声明一个相对 URI,这似乎是一个令人费解的遗漏。有什么我在这里想念的吗?有没有办法将相对 URI 作为其组成部分处理,或者我是否需要将其视为字符串?在这种情况下,我是否完全无法理解“相对 URI”的含义?
复制:
var uri = new Uri("/myFolder");
string foo = uri.PathAndQuery; // throws exception
Run Code Online (Sandbox Code Playgroud)
Visual Studio Pro 2015、.NET 4.5.2(如果其中任何一个有所不同)
我正在尝试在Sitecore 8.1中启动并运行基本布局,并且我遇到了一个错误,我可以找到很少的信息.当试图查看任何页面(甚至是后端界面或从Sitecore Rocks连接)时,我收到消息"找不到会话ID管理器来管理当前请求的会话ID".
一些谷歌搜索表明,这与现成的会话提供商的一些问题有关,并建议将其交换出来以保持Mongo中的会话.Sitecore的文档提供了对共享和私有会话的描述.我试图实现这些但继续收到相同的错误.
这是我现在的代码:
APP_CONFIG /包含/ MongoSessionProvider.config
<?xml version="1.0"?>
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
<sitecore>
<tracking>
<sharedSessionState>
<providers>
<clear/>
<add name="mongo" type="Sitecore.SessionProvider.MongoDB.MongoSessionProvider, Sitecore.SessionProvider.MongoDB" connectionString="session" pollingInterval="2" compression="true" sessionType="shared"/>
</providers>
</sharedSessionState>
</tracking>
</sitecore>
</configuration>
Run Code Online (Sandbox Code Playgroud)
App_Config/Include/ConnectionStrings.config(摘录)
<add name="session" connectionString="mongodb://localhost/sharedsession" />
Run Code Online (Sandbox Code Playgroud)
Web.config(摘录)
<sessionState mode="Custom" cookieless="false" timeout="20" sessionIDManagerType="Sitecore.FXM.SessionManagement.ConditionalSessionIdManager" customProvider="mongo">
<providers>
<add name="mongo" type="Sitecore.SessionProvider.MongoDB.MongoSessionStateProvider, Sitecore.SessionProvider.MongoDB" sessionType="Standard" connectionStringName="session" pollingInterval="2" compression="true" />
<add name="mssql" type="Sitecore.SessionProvider.Sql.SqlSessionStateProvider, Sitecore.SessionProvider.Sql" sessionType="Standard" connectionStringName="session" pollingInterval="2" compression="true" />
</providers>
</sessionState>
Run Code Online (Sandbox Code Playgroud)
请注意,这是在我的本地开发机器上.我有蒙戈运行(并确认其Sitecore的连接),我用它创建Session和sharedsession数据库use session和use sharedsession,我的理解是在蒙戈创建数据块的方式.
我在这里错过了什么吗?或者错误是不是意味着我认为它意味着什么?