gpt4 book ai didi

asp.net - MvcSiteMapProvider 将所有节点存储在数据库中

转载 作者:行者123 更新时间:2023-12-02 02:50:33 26 4
gpt4 key购买 nike

现在我有 Mvc.sitemap xml 文件,其中包含以下数据:

<mvcSiteMapNode title="RTS" imageUrl="fa fa-share-alt" controller="Dashboard" action="Index" area="Referrals" >
<mvcSiteMapNode title="Dashboard" controller="Dashboard" action="Index" area="Referrals" ></mvcSiteMapNode>

<mvcSiteMapNode title="Referrals" controller="List" action="Index" area="Referrals" visibility="SiteMapPathHelper,!*">
<mvcSiteMapNode title="New Referral" controller="List" action="New" area="Referrals" visibility="SiteMapPathHelper,!*" preservedRouteParameters="id" />
<mvcSiteMapNode title="Details" controller="List" action="Details" area="Referrals" visibility="SiteMapPathHelper,!*" preservedRouteParameters="id" >
<mvcSiteMapNode title="Edit" action="Edit" area="Referrals" visibility="SiteMapPathHelper,!*" preservedRouteParameters="id"/>
</mvcSiteMapNode>
</mvcSiteMapNode>

</mvcSiteMapNode>

我想将所有这些节点存储在数据库中,并且只有一个非根节点,如下所示:

<mvcSiteMapNode visibility="MenuHelper,!*" title="Home" controller="Home" action="Index"  imageUrl="fa fa-home">
<mvcSiteMapNode visibility="MenuHelper,!*" title="Home" controller="Home" action="Index" imageUrl="fa fa-home" dynamicNodeProvider="RMP.WebClient.Infrastructure.SiteMapDynamicNodeProvider, RMP.WebClient">
</mvcSiteMapNode>
</mvcSiteMapNode>

我可以使用 DynamicNodeProvider 来执行此操作吗?或者实现此逻辑的最佳方法是什么?

最佳答案

是的,如果您愿意,您可以使用单个动态节点提供程序来提供所有节点。您只需确保正确映射所有键和父键属性即可。如果您使用内部 DI,这是您最好的选择。

如果使用外部 DI,有更好的选择。您可以实现 ISiteMapNodeProvider,然后就根本不需要 XML 文件(或 .NET 属性)来托管根节点。 ISiteMapNodeProvider 的实现方式与 IDyanmicNodeProvider 类似,主要区别在于它在较低级别上运行,并且需要外部 DI 来注入(inject)实现。请参阅this answer示例 ISiteMapNodeProvider 实现和 this answer看看如何注入(inject)你的实现。如果您打算使用 XML 进行节点配置,则只需注入(inject)内置的 XmlSiteMapNodeProvider;如果您打算使用 [MvcSiteMapNodeAttribute] 进行节点配置,则只需注入(inject) ReflectionSiteMapNodeProvider。

请注意,在 MvcSiteMapProvider 的 future 版本中,您将能够在没有外部 DI 容器的情况下使用 ISiteMapNodeProvider。

关于asp.net - MvcSiteMapProvider 将所有节点存储在数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26871577/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com