小编M.R*_*.R.的帖子

在模板构建器中查询sitecore"source"字段的表示法

我试图使用查询表示法(或xpath - 无论哪个工作)设置模板的源字段,但它们似乎都没有工作.

我的内容树是多站点内容树:

France
--Page 1
----Page1A
-------Page1AA
--Page 2
--Page 3
--METADATA
----Regions

US
--Page 1
----Page1A
-------Page1AA
--Page 2
--Page 3
--METADATA
----Regions
Run Code Online (Sandbox Code Playgroud)

每个站点都有自己的METADATA文件夹,我想要它,以便在每个主要国家/地区节点中添加页面时,我希望值反映该站点的METADATA中的任何内容.我现在有两个不同的领域 - 一个droplink和一个treelistex字段.所以我想我可以只获取国家站点的父项,并获取元数据文件夹.当我在两个字段中放入以下查询时,我得到不同的结果:

 query:./ancestor::*[@@templatename='CountryHome']/METADATA/Regions/*
Run Code Online (Sandbox Code Playgroud)
  • 对于droplink字段,我只获得第一个Region(一个项目)
  • 对于treelistex字段,我获取整个内容树

然后我尝试稍微修改查询并取出"查询"符号

 ./ancestor::*[@@templatename='CountryHome']/METADATA/Regions/*
Run Code Online (Sandbox Code Playgroud)

如果我转到开发人员中心/ xpath构建器,并将上下文节点设置为主国家/地区站点下面的任何项目,它将返回我正确的内容,但是当我将其放入源代码中时,我将获得整个内容树案件.

救命!

c# asp.net sitecore content-management-system sitecore6

14
推荐指数
2
解决办法
2万
查看次数

如何防止c#类中的构造函数滥用

我一直在尝试在asp.net MVC5应用程序中实现一个松散耦合的应用程序.我有一个控制器:

public class HeaderController : Controller
    {
        private IMenuService _menuService;

        public HeaderController(IMenuService menuService)
        {
            this._menuService = menuService;
        }

        //
        // GET: /Header/
        public ActionResult Index()
        {

            return View();
        }


        public ActionResult GetMenu()
        {

            MenuItem menu = this._menuService.GetMenu();
            return View("Menu", menu);

        }

    }
Run Code Online (Sandbox Code Playgroud)

此控制器中使用的服务是:

public class MenuService : IMenuService
{
    private IMenuRespository _menuRepository;

    public MenuService(IMenuRespository menuRepository)
    {
        this._menuRepository = menuRepository;
    }

    public MenuItem GetMenu()
    {
        return this._menuRepository.GetMenu();
    }
}
Run Code Online (Sandbox Code Playgroud)

并且在服务类中使用的存储库是:

public class MenuRepository : IMenuRespository
    {
        public MenuItem GetMenu()
        { …
Run Code Online (Sandbox Code Playgroud)

c# asp.net asp.net-mvc dependency-injection inversion-of-control

10
推荐指数
1
解决办法
688
查看次数

在asp.net中创建动态表单c#

所以,我需要一些输入重构一个asp.net(c#)应用程序,它基本上是一个用于创建动态表单(任何表单)的框架.从高层的角度来看,有一个表格有表格,然后有一个表格,其中包含所有表格字段,两者之间是一对多.有一个验证表,其中每个字段可以有多种类型的验证,从表单字段表到验证表是一对多.

所以问题是这个应用程序已经作为所有客户端的所有可定制解决方案出售.所以,这个想法是他们想要的任何形式,我们可以使用数据库配置来构建它.问题是,这并不总是可行的,因为字段之间存在复杂的关系,而且表单本身之间存在复杂的关系.此外,只有一次代码库,这适用于多个客户端 - 所有客户端都是自己托管的.每个客户端都有非常特定的逻辑,它们在同一个代码库中是ALL,没有真正的分离.有时候将它设置为通用是太困难了,因此有些情况下它具有硬编码逻辑(如果formID = XXX则执行_).您还可以在每个表单中拥有嵌套表单,例如,一组字段.

通常,当一个客户端请求更改时,我们进行更改并将其部署到该客户端 - 但是然后另一个客户端请求不同的更改,我们进行更改并将其部署到该客户端,但是从早期客户端的更改中断它是一个令人头疼的尝试调试,因为一切都是动态的.我们无法回滚早期的更改,因为那时其他客户端将被搞砸.

它不是在真正的3层架构中完成的 - 它是一个引用数据库类的网站,以及一个类库.网站本身,类库中存在业务逻辑,数据库存储过程(验证在存储过程中完成).

我一直负责重新组织整个事情,这些是我的想法/问题:

  1. 我认为这通常是一个糟糕的模型,因为我听到其中一位开发人员说过的一件事是,任何客户都做出改变,我们应该部署给所有人 - 但如果我们说20个客户,这是不现实的 - 需要对一切进行回归测试,因为我们不知道影响......

  2. 总共有大约100种形式,它们之间有一些相似之处(不多).但我认为动态引擎可以解决所有表单请求的想法也不现实.客户提出了最奇怪的要求.例如,他们使用此引擎执行常规数据输入表单和搜索表单.

  3. 页面之间有很多保留状态,并且它都是使用会话变量完成的,这是好的,除了它没有被真正跟踪,因此来自同一用户的会话不断被覆盖,我认为会话应该被删除的.

  4. 我真的应该重写整件事吗?这个应用程序大约3岁,已经进行了大量的测试和事情,并且实施了严格的业务逻辑,所以我讨厌摆脱所有这些(joel的建议).但它真的是一堆sphagetti代码,一切都需要永远做,事情因为微小的变化而一直在破碎.

我一直在阅读Martin Fowlers"Refactoring"和Michael Feathers"使用遗留代码有效地工作" - 而且它们很好,但我觉得它们是针对一个'略微'更好的架构的应用程序编写的,它仍然是一个3-分层架构,并且存在"某种"逻辑相似性.

思考/输入任何人?

哦,还有"救命!"

vb.net asp.net webforms web-applications dynamic

7
推荐指数
2
解决办法
1858
查看次数

Sitecore item.IsClone vs item.IsItemClone

item.IsClonevs 之间有什么区别item.IsItemClone

c# asp.net sitecore sitecore6

7
推荐指数
1
解决办法
360
查看次数

Sitecore项目:已创建vs项目:已添加

事件item:createdvs 之间有什么区别item:added?每个事件什么时候被击中?

c# asp.net sitecore content-management-system sitecore6

7
推荐指数
1
解决办法
2169
查看次数

sitecore搜索的基本用法

我正在尝试设置一个非常基本的搜索索引,以索引特定文件夹中的所有项目.我没有真正使用太多的搜索,但我正在尝试使用开箱即用的功能,因为它是一个非常简单的搜索.我只想索引所有字段.sitecore文档确实没有提供太多信息 - 我已经阅读了一些博客,他们似乎都建议我需要高级数据库爬虫(http://trac.sitecore.net/AdvancedDatabaseCrawler) - 基本上,是如果没有自定义抓取工具,它将无效.

这是正确的吗?我只想创建一个简单的索引,然后开始使用它.没有任何共享模块或其他方式,最简单的方法是什么?我浏览了sitecore上的文档,但不是很清楚(至少对我而言).它定义了web.config中索引配置的不同元素,但并没有真正解释它们的作用以及可用的值.也许我不是在寻找合适的地方..

c# asp.net sitecore content-management-system sitecore6

7
推荐指数
1
解决办法
1万
查看次数

在Visual Studio 2013中创建新Git项目时出错

我正在使用带有MS Git插件的Visual Studio 2013.我正在尝试在我的机器上添加一个现有项目来控制源代码.该项目是一个包含一个文件的空项目.项目解决方案的路径是C:\_Projects\HelloGitWorld\HelloGitWorld.csproj- 根据git设置,我创建了默认的repo位置,但它似乎没有在那里存储repo(我也尝试过这个用于其他项目,并且它创建了repo与解决方案相同的位置).

所以我基本上右键单击解决方案并选择"添加到源代码管理".这很简单,只要我这样做,我得到:

The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.
Run Code Online (Sandbox Code Playgroud)

我意识到你也可以通过git bash做到这一点,我最终将继续这样做,但是现在我只想为此添加一个本地回购.它为什么不让我?试图创建一条太长的路径在哪里?

c# git version-control visual-studio-2013

7
推荐指数
1
解决办法
2070
查看次数

Azure Devops 发布管道 XML 变量替换不起作用

我的发布管道中有一个非常简单的变量替换,但它不起作用。connectionStrings.config我在文件中有这样的变量:

<?xml version="1.0"?>
<connectionStrings>
  <add name="ExpenseDBConnectionString" connectionString="__ProdConnString__" providerName="System.Data.SqlClient" />
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)

然后我在发布管道中定义了变量:

在此输入图像描述

我还在XML Variable Substitution部署任务中启用了:

在此输入图像描述

但我运行了该版本,并且该变量没有被替换。我在日志中收到此消息:

2020-02-28T19:57:26.1262198Z Initiated variable substitution in config file : D:\a\_temp\temp_web_package_875508750741006\Content\D_C\a\1\s\Expenses.Web\obj\Release\Package\PackageTmp\App_Config\ConnectionStrings.config
2020-02-28T19:57:26.1312311Z Processing substitution for xml node : connectionStrings
2020-02-28T19:57:26.1321602Z Skipped Updating file: D:\a\_temp\temp_web_package_875508750741006\Content\D_C\a\1\s\Expenses.Web\obj\Release\Package\PackageTmp\App_Config\ConnectionStrings.config
Run Code Online (Sandbox Code Playgroud)

这应该很简单,所以不确定我缺少什么设置。帮助!

azure variable-substitution devops azure-devops azure-pipelines

6
推荐指数
1
解决办法
1万
查看次数

数据仓库中的交叉引用事实和维度

我正在尝试为许可供应商设计数据仓库,许可供应商在电子商务和其他各种场所销售许可证.他们想要跟踪的事情是销售,产品生命周期和活动.这意味着有不同的销售类型(例如新购买,促销购买,续订)和许可证的不同事件/状态,例如 - 许可证可以安装,更新,激活,注册.许可证可以多次续订(在不同的日期).

所以我认为我的尺寸非常简单 - 日期,产品,来源,销售类型和事件/状态.我会有两个事实表; 一个用于销售,另一个用于事件,它们都具有维度表的外键.我的事实表将是一个累积的事实表,其中每个事件都会添加一个新行 - 因此,许可证可以重复.但是,要求规定他们能够交叉引用这两个事实以及销售类型和事件维度.例如,如果某人看到"A"在"新购买"类型的美国电子商务商店中有100个销售,那么他们希望看到有多少'那些'100个许可证也被激活......然后他们可能会希望看到,激活的人,有多少人注册了......然后(回到saletype)注册了多少人,其中有多少人"更新了".我无法真正定义一个层面,因为你可以有很多这些组合....

我怎样才能做到这一点?正如我正在阅读的那样,我发现根据许可证本身似乎无法将这两个事实联系起来(这是我需要做的).

此外,我还在想,也许我可以拥有1个事实表,并且我可以"技术上"将saletype和eventtype组合成一个大型事件类型维度.所以,然后在事实表中将是一个大事务事实表,它将具有事件维度的偶数外键.但是,所以现在我有一个事实表,每个事件都有一行发生在许可证上.许可证会重复出现,并且一个事件可以多次出现(在不同的日期).因此,如果我选择查看某个事件的总计,我怎么能看到其他事件中还存在多少个许可?

我需要提供所有这些数字作为度量,以便业务用户可以即时查看它们(使用他们想要使用的任何OLAP浏览器)

注意:我使用的是SQL Server分析服务和SQL Server 2008 r2

作为参考,这就是我现在拥有的:

  1. DimProducts(PK:ProductID和其他属性)
  2. DimDate(PK:DateKey和其他属性)
  3. DimEvent(PK:EventID和其他属性)

  4. FactLicenses(FK:ProductID; FK:DateKey; FK:EventID和许可证字段(varchar))

所以我重复了许可证,每次发生许可证时都会发生事件(安装,激活,续订,取消,续订(再次).可能有一个许可证具有相同的eventID,但从不在同一个DateKey上.表的主键是DateKey + EventID + License

编辑:

所以,我在很多地方都读过这样的情况下的事实表应该是一个累积的事实表,它有多个指向同一(类型)维度的列 - (即日期),我应该创建角色扮演每个人的维度.但是,您如何解释许可证可以多次续订,并且可以多次安装等事实......?

ssas data-warehouse business-intelligence

5
推荐指数
1
解决办法
4436
查看次数

Sitecore插入规则以确保最多(1)某种类型的儿童

在sitecore中是否有办法确保某种类型的项目只能拥有某种类型项目的1个孩子?我正在阅读规则引擎食谱,但我没有得到太多细节.

c# sitecore content-management-system sitecore6

5
推荐指数
1
解决办法
1749
查看次数