我建议您创建像 /city/london/1234 这样的 url,其中最后一部分是文档的 ID。通过使用 Umbraco 内置的 UrlRewrite 功能,可以将 url 内部重写为 /city.aspx?name=london&id=1234 在 /config/Urlewriting.config 中可以添加重写规则。对于上面你需要这样的东西:
<add name="city_rewrite"
virtualUrl="^~/city/(.*)/(.*)"
rewriteUrlParameter="ExcludeFromClientQueryString"
destinationUrl="~/city.aspx?name=$1&cityid=$2"
ignoreCase="true" />
一旦你解决了这个问题,你可以在你的代码隐藏中使用以下代码关闭 City.aspx 宏来获取相应的文档。
// get the city Document Id from the querystring
string cityID = HttpContext.Current.Request.QueryString["cityid"];
if (!string.IsNullOrWhiteSpace(cityId))
{
// get the cityNode
Node cityNode = new Node(cityId);
// do whatever you want with this node, like display it's data
}
这是一个 .NET 宏,但当然您可以使用 XSLT 或 Razor 代码执行相同的操作。