gpt4 book ai didi

asp.net-mvc-3 - 使用dynamicNodeProvider的子节点

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

我使用this project生成站点地图路径。

在我的应用程序中我希望站点地图路径保持如下:

路径: 主页 > 项目 > {project-name}
网址: /projects/{url-project}

路径: 首页 > 项目 > {project-name} > 照片
网址: /projects/{url-project}/photos

路径: 主页 > 项目 > {project-name} > 地址
网址: /projects/{url-project}/addresses

路径: 主页 > 项目 > {project-name} > 管理
网址: /projects/{url-project}/admin

尝试

为此,我创建了 DynamicNodeProviderBase实现

public class ProjectDetailsDynamicNodeProvider : DynamicNodeProviderBase
{
private readonly IProjectRepository _projectRepository;
public ProjectDetailsDynamicNodeProvider()
{
_projectRepository = DependencyResolver.Current.GetService<IProjectRepository>();
}

#region Overrides of DynamicNodeProviderBase

public override IEnumerable<DynamicNode> GetDynamicNodeCollection()
{
// Build value
var returnValue = new List<DynamicNode>();
var listDB = (from p in _projectRepository.Query()
select new { p.Name, p.Keyword, p.Description });

// Create a node for each project
foreach (var project in listDB.ToList())
{
var node = new DynamicNode { Title = project.Name, Description = project.Description };
node.RouteValues.Add("url", project.Keyword);

returnValue.Add(node);
}

// Return
return returnValue;
}

#endregion
}

Mvc.sitemap

<mvcSiteMapNode title="Projects" controller="Project" action="Index">
<mvcSiteMapNode title="New project" controller="Project" action="Create" />

<mvcSiteMapNode title="Project" action="About" controller="Project" dynamicNodeProvider="BindSolution.Infra.ProjectDetailsDynamicNodeProvider, BindSolution">
<mvcSiteMapNode title="Photos" controller="Project" action="Photos" />
<mvcSiteMapNode title="Addresses" controller="Project" action="Addresses" />
<mvcSiteMapNode title="Admin" controller="Project" action="Admin" />
</mvcSiteMapNode>
</mvcSiteMapNode>

结果

路径: 主页 > 项目 > {project-name}
网址: /projects/{url-project}

路径: 项目 > 照片
网址: /projects/{url-project}/photos

路径: 项目 > 地址
网址: /projects/{url-project}/addresses

路径: 项目 > 管理
网址: /projects/{url-project}/admin

研究

上网一看,I found this question on stackoverflow ,但不太理解该决议,或者它不适合我的问题。无论如何,如果这是答案,您可以向我提供有关如何实现该解决方案的更多详细信息吗?

感谢大家的帮助!

最佳答案

我们的代码是/country/{countryname}//country/{countryname}/profiles

这就是我的想法。所以我会用 url-project 替换国家/地区。我注意到这种方法的唯一问题是我们的国家(我们有 210 个)内存不足,所以我不知道它是否是最好的。我在州(50)和其他一些州做了这件事,没有遇到问题。不过,我在国家/地区方面遇到了问题,而且我们在顶部列出了 9 个不同的页面。当我把它保持在4时,我没有问题。希望这可以帮助。

public class CountriesDynamicNodeProvider : DynamicNodeProviderBase
{
globalEDGEDataContext _db = new globalEDGEDataContext();
public override IEnumerable<DynamicNode> GetDynamicNodeCollection()
{
var returnValue = new List<DynamicNode>();
foreach (var category in _db.CountriesList().Select(a => a.Title))
{
DynamicNode node = new DynamicNode("country_" + Tags.MakeUrlFriendly(category), category);
node.RouteValues.Add("country", Tags.MakeUrlFriendly(category));
yield return node;
}
}
}

public class CountriesPagesDynamicNodeProvider : DynamicNodeProviderBase
{
globalEDGEDataContext _db = new globalEDGEDataContext();
public override IEnumerable<DynamicNode> GetDynamicNodeCollection()
{
foreach (var category in _db.CountriesList().Select(a=>a.Title))
{
DynamicNode node = new DynamicNode();
node.Title = "Profile";
node.ParentKey = "country_" + Tags.MakeUrlFriendly(category);
node.RouteValues.Add("country", Tags.MakeUrlFriendly(category));
yield return node;
}
}
}

该示例也适用于 MVC5。稍作修改:

  public class DepartmentEmployeeDynamicNodeProvider: DynamicNodeProviderBase
{
AlertsContext db = new AlertsContext();

public override IEnumerable<DynamicNode> GetDynamicNodeCollection(ISiteMapNode node)
{
// Build value
var returnValue = new List<DynamicNode>();

// Create a node for each department
foreach (var department in db.Departments)
{
var dynNode = new DynamicNode();
dynNode.Title = department.DepartmentName;
dynNode.RouteValues.Add("id", department.ID);

returnValue.Add(dynNode);
}

// Return
return returnValue;
}
}

关于asp.net-mvc-3 - 使用dynamicNodeProvider的子节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8624932/

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