0

我希望有人能给我一些帮助,我打算做什么......

我想创建一个动态的“City.aspx”页面,它接受一个 url 参数并根据该特定城市动态生成一个页面。

例如,如果有人叫“City.aspx?city=london”,那么它将构建一个包含与伦敦相关的自定义内容的页面,如果有人称该页面为“City.aspx?city=manchester”,它将构建一个包含相关内容的页面到曼彻斯特。

我已经研究过构建站点地图和 UrlRewriting 并且很确定我可以使用参数重定向到这个新页面,但不知道下一步我需要做什么。

有人可以帮忙吗?

谢谢

出租车路线

4

2 回答 2

2

我建议您创建像 /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&amp;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 代码执行相同的操作。

于 2013-01-20T16:20:16.607 回答
0

如果您拥有标准 Umbraco 内容之外的信息,这些信息对于每个城市都是动态的,那么只需编写一个或多个宏(或部分视图?)以通过该“城市”获取参数获取动态数据。然后,您可以使用 UrlRewriting 使 URL 看起来像标准网页 (/city/london.aspx)。UrlRewriting 将使该 URL 在服务器上看起来好像是这样的:/city.aspx?city=london。(http://our.umbraco.org/wiki/reference/packaging/package-actions/community-made-package-actions/add-an-url-rewrite-rule

在您的宏中,您可以通过括号语法(http://our.umbraco.org/wiki/reference/templates/umbracomacro-element/macro-parameters )将“city”get 参数作为宏参数传递给宏/高级宏参数语法)。或者您可以通过请求变量 (razor) 或 Umbraco.library (XSLT) 获取城市参数。

于 2013-01-19T23:44:51.850 回答