【问题标题】:Return XML using a Razor Page?使用 Razor 页面返回 XML?
【发布时间】:2018-05-06 11:26:56
【问题描述】:

如何使用 Razor 页面创建 XML(特别是我正在尝试构建 sitemap.xml)?

我已经阅读了 MSDN Introduction to Razor Pages ,但它只展示了如何创建 HTML 页面。当我只使用Generating dynamic XML in Razor 中所示的基本 XML 时,出现问题...

【问题讨论】:

    标签: c# .net asp.net-core razor-pages


    【解决方案1】:

    添加具有以下内容的新 Razor 页面。

    @page
    <?xml version="1.0" encoding="UTF-8" ?>
    @{
        Layout = null;
    }
    <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
        @*Include your static urls*@
        <url>
            <loc>https://example.com/my-static-page</loc>
        </url>
        @*Dynamically include pages generated from your database*@
        @foreach(var article in articles)
        {
            <url>
                <loc>https://example.com/article/@article.Url</loc>
                <lastmod>@article.Modified.ToString("yyyy-MM-dd")</lastmod>
            </url>
        }
        @*You get the idea*@
    </urlset>
    

    @{Layout=null;} 之前的 XML 声明是必不可少的!否则 XML 解析器将无法正常工作,这一切都将一事无成。

    奖金: 要使路由 /sitemap.xml 正常工作,您需要添加它。

    public class Startup
    {
        public void ConfigureServices(IServiceCollection services)
        {
            services
                .AddRazorPagesOptions(options => 
                {
                    options.Conventions.AddPageRoute("/Sitemap", "sitemap.xml");
                });
        }
    }
    

    【讨论】:

    • 这篇文章并没有真正回答这个问题(忽略了这个问题太宽泛的事实)。展示如何从 ASP.Net MVC 返回 XML 是站点地图生成中最不感兴趣的部分(并且对于 .Net 运行时 ASP.Net/ASP.Net MVC/ASP.Net-core 的所有组合已经多次回答。
    • 重点是它可以通过 Razor Pages 完成,并且存在一个不明显的陷阱需要避免。我承认我提出的问题太宽泛了。有时间我会修改的。
    • 请阅读问题 - “制作动态站点地图”(您编写问题的事实并不意味着您看到了所写的内容)。关于返回 XML - 您可能希望使用更好的搜索引擎 - Google 或 Bing (bing.com/search?q=c%23+aps.net+core+return+xml+file+razor) 将展示如何使用 Razor 返回 XML 文件...
    • 您意识到这不是 Razor 视图,而是 Razor 页面? docs.microsoft.com/en-us/aspnet/core/mvc/razor-pages/…
    • 我的意思是,搜索引擎结果没有答案,特别是 Razor Pages。我以为你会把我链接到一个搜索结果来证明你的观点。如果你没有,我认为你一定是把 Razor 视图和 Razor 页面弄错了。我为混乱道歉。另外,感谢您帮助我解决问题的结构。我这样做又快又脏,这是不合适的。
    猜你喜欢
    • 2019-04-27
    • 2022-11-01
    • 2019-10-19
    • 1970-01-01
    • 2019-03-12
    • 1970-01-01
    • 2020-08-11
    • 2020-02-09
    • 2018-10-11
    相关资源
    最近更新 更多