在带有母版页的 Umbraco 网页上显示 XML 内容(用于站点地图)

Showing XML content on on an Umbraco webpage with Masterpages (for sitemap)

我是 运行 Umbraco 的多站点实例。一切顺利,但现在我需要创建站点地图。

我已经成功创建了显示完美 XML 格式站点地图的宏,但是....

我不知道如何以正确的方式在页面上显示 headers。现在看起来像这样:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title></title>
</head>
<body>
   <form method="post" action="./sitemap" id="form1">
     <div class="aspNetHidden">
         <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="faEtomis/pJrnOEH1FjMt3tYgJgnPP8lddqb60IlljFoqaMzmdGrfFsw4WeF9tCiqAa6bpN0obMQKnBNa1OmWHYSPuVgJB8116lnS+3eY95EqMoOpeTPa8jbsUSJXzXx" />
     </div>
     <div>
       <url>
          <loc>https://www.example.com/</loc>;
          <lastmod>2017-02-12T17:41:48+00:00</lastmod>
       </url>
     </div>
     <div class="aspNetHidden">
        <input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="CA0B0334" />
     </div>
</form>
</body>
</html>

显然,这不是格式正确的 XML 站点地图文件。

我的问题是 umbraco/default.master 必须有基础 html、head、body 标签才能让我的模板的 ContentPlaceHolder 工作。

我该怎么做才能完成这项工作?

您的 Sitemap.Master 模板(或您用来放置站点地图 xml 结构的任何模板)不必继承任何东西,但默认的 Umbraco MasterPage 不应包含任何 HTML 标记。例如,Umbraco 的库存标准安装具有以下 /Umbraco/MasterPages/Default.Master:

<%@ Master Language="C#" AutoEventWireup="True" CodeBehind="Default.master.cs" Inherits="Umbraco.Web.UI.Umbraco.Masterpages.Default" %>
<asp:ContentPlaceHolder ID="ContentPlaceHolderDefault" runat="server">
</asp:ContentPlaceHolder>

值得注意的是,如果您确实在使用 Umbraco 7(或 6),您可以使用 MVC 而不是 MasterPages 创建一个模板,它仍然可以工作。

要获得更详细的答案,请分享您当前的站点地图母版页模板和结构...