C# 使用MvcSiteMapProvider 4实现图像站点地图
我使用MvcSiteMapProvider为我们的站点实现动态站点地图。该网站有一个不断更新的文章集,每一篇文章都表示为一个不同的页面。因此,我们使用MvcSiteMapProvider来动态生成sitemap.xml。然而,问题是我们已经在文章中添加了图像,我们希望将这些图像添加到sitemap.xml,以便它们也可以被索引 我需要实现的是生成一个类似于为站点地图添加图像URL所述的结构,即:C# 使用MvcSiteMapProvider 4实现图像站点地图,c#,asp.net-mvc,seo,mvcsitemapprovider,C#,Asp.net Mvc,Seo,Mvcsitemapprovider,我使用MvcSiteMapProvider为我们的站点实现动态站点地图。该网站有一个不断更新的文章集,每一篇文章都表示为一个不同的页面。因此,我们使用MvcSiteMapProvider来动态生成sitemap.xml。然而,问题是我们已经在文章中添加了图像,我们希望将这些图像添加到sitemap.xml,以便它们也可以被索引 我需要实现的是生成一个类似于为站点地图添加图像URL所述的结构,即: <?xml version="1.0" encoding="UTF-8"?> <
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">
<url>
<loc>http://example.com/sample.html</loc>
<image:image>
<image:loc>http://example.com/image.jpg</image:loc>
</image:image>
<image:image>
<image:loc>http://example.com/photo.jpg</image:loc>
</image:image>
</url>
</urlset>
http://example.com/sample.html
http://example.com/image.jpg
http://example.com/photo.jpg
目前我的DynamicNode生成代码如下
public override IEnumerable<DynamicNode> GetDynamicNodeCollection(ISiteMapNode node)
{
List<Article> articles = new List<Article>();
using(siteMapHelperDB db = new siteMapHelperDB())
{
articles = db.GetArticleSiteMapNodes();
}
foreach(Article item in articles)
{
var dynamicNode = new DynamicNode();
dynamicNode.Title = item.urlName; // URL Friendly title
dynamicNode.RouteValues.Add("id", string.Format("{0}/{1}", item.ID, item.urlName));
yield return dynamicNode;
}
}
public override IEnumerable GetDynamicNodeCollection(ISiteMapNode节点)
{
列表项目=新列表();
使用(siteMapHelperDB=new siteMapHelperDB())
{
articles=db.GetArticleSiteMapNodes();
}
foreach(文章中的文章项)
{
var dynamicNode=新的dynamicNode();
dynamicNode.Title=item.urlName;//URL友好的标题
Add(“id”,string.Format(“{0}/{1}”,item.id,item.urlName));
收益动态模型;
}
}
我的Mvc.Sitemap说明如下:
<mvcSiteMapNode title="Articles" controller="Articles" action="Show"
dynamicNodeProvider="ArticlesKB.ArticlesNodeProvider, ArticlesKB"/>
到目前为止,所有这些都非常有效。我现在需要了解的是,如何为每篇文章添加
节点
MvcSiteMapProvider 4当前支持这一点吗?如果是,我需要做什么来实现它
谢谢 目前不支持开箱即用。即使如此,它也从未完成过,并且作为一项新功能,它已经在待办事项列表中。但是,由于这是开源的,所以只要有人来做,它就会完成:) 因此,您有两种选择:
子节点的格式完全相同的格式,这样就可以从另一个XML文档复制和粘贴它。您需要更新XSD文件,以便它能够适当地验证XML节点.Attributes.Add(“站点地图图像”,imageCollection)
XmlSiteMapController.RegisterRoutes(RouteTable.Routes)应用程序\u Start\MvcSiteMapProviderConfig.cs文件中的代码>行
谢谢我会努力使它为我们的网站工作,如果它工作正常,我会尝试创建一个适当的贡献包。仅供参考-我正在工作