1

我已经阅读了 John West 关于站点配置工厂的文章(http://www.sitecore.net/unitedkingdom/Community/Technical-Blogs/John-West-Sitecore-Blog/Posts/2011/02/The-Sitecore-ASPNET- CMS-配置-Factory.aspx

我正在尝试在自定义链接提供程序中实现它。

我希望配置工厂在链接提供程序中调用以下方法:

public void AddSitePath(String site, String path)
{
   // do stuff
}

这是配置(尽管我尝试了几种类似的变体)。

<add name="sitecore" type="MyProject.Providers.CustomLinkProvider, MyProject" addAspxExtension="false" alwaysIncludeServerUrl="false" encodeNames="true" languageEmbedding="never" languageLocation="filePath" shortenUrls="true" useDisplayName="false">
    <sitePaths hint="list:AddSitePath">
        <sitePath>
            <site>SiteOneName</site>
            <path>/product-range/</path>           
        </sitePath>
        <sitePath >
            <site>SiteTwoName</site>
            <path>/items-for-sale/</path>
        </sitePath>            
    </sitePaths>
</add >

我收到以下错误消息:找不到添加方法:AddSitePath(类型:MyProject.Providers.CustomLinkProvider)

我怀疑问题在于我试图将 2 个参数传递给该方法,果然,当我使用单个参数版本对其进行测试时,它起作用了。

我需要在配置或类代码中进行哪些更改才能实现我的需要?

4

1 回答 1

1

所以看起来你不能提供 2 个参数。相反,您传入一个 XmlNode 对象,其中包含您需要的所有内容。您必须从方法中的 XmlNode 中提取信息。

类似于以下内容:

public void AddSitePath(XmlNode arg)
{
   // pick apart the XmlNode and do stuff
}
<sitePaths hint="raw:AddSitePath">
    <sitePath site="SiteNameOne" path="/product-range/">
    <sitePath site="SiteNameTwo" path="/items-for-sale/">            
</sitePaths>

请注意,您必须使用“原始”前缀而不是“列表”

于 2013-04-04T20:44:43.023 回答