asp.net-mvc – ASP.NET MVC中的动态网站地图

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – ASP.NET MVC中的动态网站地图前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试创建一个自动网站地图ActionResult,以输出有效的sitemap.xml文件。实际生成文件不是一个问题,但我似乎不知道如何填充URL的系统中的列表。这里是我到目前为止的代码
public ContentResult Sitemap()
    {
        XNamespace xmlns = "http://www.sitemaps.org/schemas/sitemap/0.9";
        XElement root = new XElement(xmlns + "urlset");

        //some kind of foreach here to get the loc variable for all URLs in the site
        //for each URL in the collection,add it to the root element as here

        //root.Add(
        //    new XElement("url",//        new XElement("loc","http://google.com"),//        new XElement("changefreq","daily")));

        using (MemoryStream ms = new MemoryStream())
        {
            using (StreamWriter writer = new StreamWriter(ms,Encoding.UTF8))
            {
                root.Save(writer);
            }

            return Content(Encoding.UTF8.GetString(ms.ToArray()),"text/xml",Encoding.UTF8);
        }
    }

例如,假设我有两个控制器,每个控制器有两个与它们相关的动作:

HelpController

>编辑
>创建

AboutController

>公司
>管理

我似乎不知道如何得到一个URL列表像:

> http://localhost/help/edit
> http://localhost/help/create
> http://localhost/about/company
> http://localhost/about/management

解决方法

我发布了一个自己做的答案下面。但这里是一个包,它开箱即用的MVC网站:

http://mvcsitemap.codeplex.com/(< - 旧网站,但有广泛的文档!) https://github.com/maartenba/MvcSiteMapProvider/wiki(< - 移动到新网站,缺少一些文档,而不是活动) 注意它做了很多事情:
>自动在Mvc路由中注册自身以响应SEO /sitemap.xml请求(即使没有/sitemap.xml的物理文件)。这是完全兼容所有的搜索引擎机器人,我发现,以及滚动,当它达到10,000,等。
>带有一组局部视图,用于BreadCrumb导航内置!我们使用这个相当广泛,虽然动态数据部分是有点麻烦,它的工作。
>包含一系列部分视图,用于菜单控制。
>荣誉控制器和操作方法的[授权]安全位。

所有上述点均由您编辑和配置的单个mvc.sitemap XML文件控制。我已经使用这个在一些项目现在做2或3的以上点。有它所有可配置在1个地方,并动态生成,是真的很好。

虽然我发现创建动态数据提供者的能力有点麻烦(并严重违反任何类型的IoC你希望做),它确实得到工作完成和缩放,一旦你绕过他们的缓存和使用自己的。

原文链接:https://www.f2er.com/aspnet/254456.html

猜你在找的asp.Net相关文章