c# - 使用 Razor 页面返回 XML?

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

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

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

最佳答案

使用以下内容添加一个新的 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");
            });
    }
}

关于c# - 使用 Razor 页面返回 XML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47439531/

相关文章:

asp.net-core - 将查询字符串传递给 Asp.net core razor 页面中的 AddPageRoute

.net - TextWriterTraceListener 和带有 GUID 的跟踪文件名

.net - 电子邮件通知

azure - 如何将asp.net Core 3.1部署到Azure

c# - 您可以在 nhibernate 的一个 session 中发生多个事务吗?这是个坏主意吗?

c# - 如何在已编译的 .NET 程序集中使用 Matlab 对象?

visual-studio - 如何在 VS 中为 Razor 页面 (cshtml) 添加自定义代码片段

c# - 使用外部 Web API 提供的 OAuth Bearer Token 进行授权

c# - 如何将表达式传递到 Entity Framework LINQ 查询 OrderBy 子句中

c# - 如何通过 SSIS 中的主包在 TFS 上运行包?